---
title: uruads developer portal
description: REST API, MCP server and OpenAPI description for uruads, with keys, quickstart and the error contract.
canonical: https://uruads.ai/developers
---

# Build with uruads

Generate UGC-style video ads, images and avatars, auto-edit footage, research
what is working for competitors, and schedule to connected social accounts —
over one REST API and an MCP server built on the same surface.

## Surfaces

| Surface | Endpoint | Notes |
| --- | --- | --- |
| REST API | `https://uruads.ai/api/external/v1` | 53 endpoints, 66 operations |
| MCP server | `https://mcp.uruads.ai/mcp` | 57 tools, Streamable HTTP, public handshake |
| OpenAPI 3.1 | <https://uruads.ai/openapi.json> | operationId and description on every operation |

## Get a key

Keys are self-serve. Create an account, open Settings → API keys, and create
one — it is shown once. A key can be bound to a single brand, which pins every
request made with it to that brand. Full walkthrough: <https://uruads.ai/auth.md>.

## First request

```bash
curl https://uruads.ai/api/external/v1/account \
  -H "Authorization: Bearer $URUADS_API_KEY"
```

Returns the account, plan, credit balances and brand scope. Generation is
asynchronous — `POST /videos/generate` returns a job you poll.

## Connect an agent

```json
{
  "mcpServers": {
    "uruads": {
      "type": "http",
      "url": "https://mcp.uruads.ai/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}
```

The handshake needs no credentials, so a client can list the tools before you
give it a key.

## Try it without a key

```bash
curl https://uruads.ai/api/public/catalog

curl -X POST https://mcp.uruads.ai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

There is no separate sandbox environment — these are the production endpoints.
A free trial covers evaluating the generation surface.

## Errors

| Status | Meaning |
| --- | --- |
| 401 | Missing or invalid key. Carries `WWW-Authenticate` with a `resource_metadata` pointer. |
| 402 | Plan quota or credit limit reached. Do not retry. |
| 403 | The key cannot act on that brand. Call `GET /brands`. |
| 429 | Rate limited. Back off and retry. |

## Reference

- [Agent skill](https://uruads.ai/.well-known/agent-skills/uruads/SKILL.md)
- [MCP server card](https://uruads.ai/.well-known/mcp/server-card.json)
- [Pricing](https://uruads.ai/pricing.md)
