Appearance
All API Endpoints
Complete reference of every endpoint on Universal API.
Base URL: https://api.universalapi.coStreaming URL: https://stream.api.universalapi.coVoice URL: https://voice.api.universalapi.co
All authenticated endpoints use: Authorization: Bearer YOUR_TOKEN
MCP Servers
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /mcp-admin/create | Required | Create a new MCP server |
GET | /mcp-admin/list | Optional | List MCP servers |
GET | /mcp-admin/{serverId} | Optional | Get server details |
GET | /mcp-admin/s/{owner}/{slug} | Optional | Get server by slug |
PUT | /mcp-admin/update | Required | Update a server |
DELETE | /mcp-admin/delete | Required | Delete a server |
POST/GET | /mcp/{serverId} | Optional | MCP protocol endpoint |
POST/GET | /mcp/s/{owner}/{slug} | Optional | MCP protocol (slug) |
Agents
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /agent/create | Required | Create a new agent |
GET | /agent/list | Optional | List agents |
GET | /agent/{agentId} | Optional | Get agent details |
GET | /agent/s/{owner}/{slug} | Optional | Get agent by slug |
PUT | /agent/update | Required | Update an agent |
DELETE | /agent/delete | Required | Delete an agent |
POST | stream.../agent/{agentId}/chat | Required | Chat with agent (streaming) |
GET | /agent/conversations/recent | Required | List recent conversations across all agents |
GET | /agent/{agentId}/conversations | Required | List conversations for an agent |
GET | /agent/{agentId}/conversation/{convId} | Required | Get conversation history |
INFO
Agent chat uses the streaming domain: https://stream.api.universalapi.co
Voice Agents (Bi-Directional Streaming)
Voice agents use WebSocket connections on the voice domain: wss://voice.api.universalapi.co
| Method | Endpoint | Auth | Description |
|---|---|---|---|
WebSocket | wss://voice.../ws/{agentId} | Required | Browser voice chat (PCM 16kHz audio) |
WebSocket | wss://voice.../ws/twilio/{agentId} | Required | Twilio phone integration (μ-law 8kHz) |
GET | https://voice.../health | None | Health check |
GET | https://voice.../metrics | None | Active connection metrics |
INFO
Voice agents use the voice domain: https://voice.api.universalapi.co
Auth is via query parameter (?token=uapi_ut_xxx) or first WebSocket message ({"type":"auth","token":"..."}).
Billing: 50 credits/minute while connected.
Embed Widgets
Create embeddable AI chat widgets for any website. Embed tokens (emb_pk_live_*) are publishable keys that can be safely included in client-side code.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /embed/create | Required | Create a new embed token |
GET | /embed/list | Required | List your embed tokens |
GET | /embed/config?token={token} | None | Get widget config (public) |
PUT | /embed/{embedTokenId} | Required | Update embed token settings |
DELETE | /embed/{embedTokenId} | Required | Revoke an embed token |
POST | /embed/chat | Special | Get streaming credentials (used by widget) |
INFO
Embed tokens support dual-mode widgets (text + voice). Provide agentId for text chat, voiceAgentId for voice, or both for a toggle widget.
See the Embed Widget guide for full setup instructions and the Embed API Reference for request/response details.
Create embed token example:
bash
curl -X POST https://api.universalapi.co/embed/create \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"agentId": "your-text-agent-id",
"voiceAgentId": "your-voice-agent-id",
"allowedDomains": ["yourdomain.com"],
"greeting": "Hello! How can I help?",
"color": "#6366f1"
}'User & Account
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /user/info | Required | Get user profile, credits, alias |
GET | /user/credits | Required | Get current credit balance |
POST | /user/alias | Required | Set your alias (username) |
PUT | /user/alias | Required | Update your alias |
PUT | /user/profile | Required | Update profile settings |
DELETE | /user/account | Required | Delete your account (GDPR/CCPA) |
INFO
Account deletion is permanent and removes all resources, tokens, and data. Pass {"confirm": true} in the body.
Access Tokens
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /user/token/create | Required | Create a Bearer token |
GET | /user/token/list | Required | List your tokens |
GET | /user/token/{tokenId} | Required | Get token details |
PUT | /user/token/update | Required | Update token metadata |
POST | /user/token/revoke | Required | Revoke a token |
POST | /user/token/{tokenId}/regenerate | Required | Regenerate token secret |
Role Tokens
Role tokens (uapi_rt_*) provide scoped access with specific third-party keys attached. Authors can attach them to resources for credential injection.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /role-token/create | Required | Create a role token with attached keys |
GET | /role-token/list | Required | List your role tokens |
POST | /role-token/revoke | Required | Revoke a role token |
POST | /role-token/validate | Required | Validate a role token |
Third-Party Keys
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /keys/store | Required | Store an API key |
GET | /keys/list | Required | List stored keys (metadata only) |
GET | /keys/check/{serviceName} | Required | Check if a key exists |
OAuth
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /oauth/authorize/{provider} | Required | Get OAuth authorization URL |
Providers: google, microsoft, github
Search
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /search?q={query} | Optional | Semantic search across resources |
Query parameters: q (query), type (all, mcp, mcp-tool, agent), limit
Knowledge Storage
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /knowledge/list | Required | List files and folders |
POST | /knowledge/upload | Required | Upload file directly (5MB max) |
POST | /knowledge/upload-url | Required | Get presigned upload URL |
POST | /knowledge/download-url | Required | Get presigned download URL |
ANY | /knowledge/delete | Required | Delete a file |
POST | /knowledge/delete-folder | Required | Delete a folder |
POST | /knowledge/create-folder | Required | Create a folder |
POST | /knowledge/search | Required | Semantic search across files |
Cron Jobs (Scheduled Agent Invocation)
Schedule agents to run automatically at recurring intervals.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /cron | Required | List your cron jobs |
POST | /cron | Required | Create a new cron job |
GET | /cron/{cronId} | Required | Get cron job details |
PUT | /cron/{cronId} | Required | Update a cron job |
DELETE | /cron/{cronId} | Required | Delete a cron job |
INFO
Supports EventBridge rate(N unit) or cron(min hr dom mon dow yr) schedule expressions with timezone support. After 3 consecutive failures, the job auto-pauses.
Channels (Messaging Platform Integration)
Connect agents to messaging platforms for automated conversations.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /channels | Required | List your channels |
POST | /channels | Required | Create a new channel |
GET | /channels/{channelId} | Required | Get channel details |
PUT | /channels/{channelId} | Required | Update a channel |
DELETE | /channels/{channelId} | Required | Delete a channel |
POST | /channels/{channelId}/test | Required | Send a test message |
POST | /channels/{channelId}/call | Required | Initiate outbound phone call (Twilio Voice/Unified) |
POST | /channels/{channelId}/mute-sender | Required | Mute a sender (pause AI auto-replies for human takeover) |
POST | /channels/{channelId}/unmute-sender | Required | Unmute a sender (resume AI auto-replies) |
GET | /channels/{channelId}/muted-senders | Required | List all muted senders |
POST | /channels/{channelId}/send | Required | Send a manual message via channel (Twilio SMS/Unified) |
POST | /channels/inbound/{channelId}/{platform} | None | Inbound webhook (signature-verified) |
GET | /channels/inbound/{channelId}/whatsapp | None | WhatsApp verification challenge |
INFO
Supported platforms: Slack, Discord, Telegram, WhatsApp, Twilio Voice, Twilio SMS, Twilio Unified, Generic Webhook. Inbound webhooks are verified using platform-specific signature validation. Twilio SMS includes TCPA compliance (STOP/HELP/START keyword handling). Twilio Unified handles both voice and SMS on a single phone number.
Task Board
Submit tasks for parallel AI agent execution on cloud instances.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /tasks | Required | Submit a single task |
POST | /tasks/bulk | Required | Submit multiple tasks at once |
GET | /tasks | Required | List your tasks |
GET | /tasks/{taskId} | Required | Get task details |
PUT | /tasks/{taskId} | Required | Update a task |
DELETE | /tasks/{taskId} | Required | Delete a task |
POST | /tasks/{taskId}/status | Required | Update task status |
Subscriptions & Billing
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /user/subscription | Required | Get subscription details |
POST | /subscription/checkout | Required | Create Stripe checkout session |
POST | /subscription/portal | Required | Get Stripe customer portal URL |
Author Dashboard
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /author/earnings | Required | Get earnings breakdown |
GET | /author/resources | Required | Get authored resources with metrics |
POST | /author/stripe/connect | Required | Start Stripe Connect onboarding |
GET | /author/stripe/status | Required | Get Connect account status |
GET | /author/stripe/dashboard | Required | Get Stripe Express dashboard URL |
GET | /author/payouts/history | Required | Get payout history |
POST | /author/payouts/process | Required | Manually trigger payout |
Analytics
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /analytics/overview | Required | Get analytics overview (total invocations, credits, etc.) |
GET | /analytics/timeseries | Required | Get time-series usage data |
GET | /analytics/resources | Required | Get per-resource analytics |
Website Hosting
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /website/list | Required | List files and folders |
POST | /website/upload | Required | Upload file directly (5MB max) |
POST | /website/upload-url | Required | Get presigned upload URL (25MB max) |
POST | /website/download-url | Required | Get presigned download URL |
POST | /website/delete | Required | Delete a file |
POST | /website/delete-folder | Required | Delete a folder |
POST | /website/create-folder | Required | Create a folder |
GET | /website/usage | Required | Get storage usage stats |
GET | /website/info | Required | Get site URL, alias, and status |
POST | /website/invalidate | Required | Invalidate CloudFront CDN cache |
INFO
Sites are publicly accessible at https://site.universalapi.co/{alias}/{path}. Storage quotas: Free 50MB, Starter 1GB, Professional 10GB.
Code Server
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /code-server/status | Required | Get instance status |
POST | /code-server/launch | Required | Launch a new instance |
POST | /code-server/start | Required | Start a stopped instance |
POST | /code-server/stop | Required | Stop a running instance |
POST | /code-server/terminate | Required | Terminate an instance |
POST | /code-server/setup | Required | Save/run a setup script with credential injection |
INFO
Code Server requires an active subscription (Starter or Professional plan). Billed at 1 credit/minute while running.
Stars
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /stars | Required | Star a resource |
DELETE | /stars | Required | Unstar a resource |
GET | /stars | Required | List your starred resources |
GET | /stars/check | Required | Check if you starred a resource |
GET | /stars/count/{resourceId} | Optional | Get star count for a resource |
INFO
Star count is public (no auth required). Starring/unstarring requires authentication. Body for star/unstar: { "resourceId": "...", "resourceType": "agent" | "mcp" }.
Logs
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET | /logs/user | Required | Get usage logs |
GET | /logs/request/{requestId} | Required | Get detailed log for a request |
GET | /logs/request/{requestId}/trace | Required | Get full execution trace |
GET | /logs/trace/{xRayTraceId} | Required | Look up log by X-Ray trace ID |