Developers
Use Autonomous Marketing from your own tools
Pull the ads, videos and images your workspace creates into your own scripts, dashboards and automations with a workspace API key.
Overview
Everything in the app goes through the same API. A workspace API key (scs_live_…) gives a server you control read access to the workspace's library — for example to publish approved creatives somewhere else.
API keys
A key belongs to exactly one workspace and acts with the editor role. It can only call the routes listed below; everything else answers 401 unauthorized. Revoke a key any time in Settings → API keys — it stops working immediately.
Create a key
- 1As a workspace admin, open Settings → API keys and click Create key.
- 2Copy the secret. It starts with
scs_live_and is shown only once. - 3Store it in your server's secret manager and send it with every request.
Authentication
Send the key in the X-Studio-Key header. The base URL is https://symia-cloud--autonomous-marketing-api.modal.run. Requests and responses are JSON, snake_case, timestamps in UTC.
curl "https://symia-cloud--autonomous-marketing-api.modal.run/v1/workspaces/ws_…/assets?kind=video&review_status=approved&limit=20" \
-H "X-Studio-Key: scs_live_…"{
"items": [
{ "id": "ast_…", "kind": "video", "title": "Spring launch — hook 2", "ratio": "9:16", "url": "https://…", "review_status": "approved" }
],
"next_cursor": null
}What a key can call
| Route | What it does |
|---|---|
| GET /v1/workspaces/{ws}/assets | List videos, images, audio and documents. Filters: q, origin, kind, ratio, folder_id, project_id, brand_id, review_status. |
| GET /v1/workspaces/{ws}/assets/{ast} | One asset with its lineage (parent, variations, translations). |
Lists return {"items": […], "next_cursor": "…" | null}. Pass ?limit=50&cursor=… to page. Media URLs are signed and expire after a few hours — read the asset again for a fresh one.
scs_live_… in browser code or a mobile app — anyone with it can act as an editor in your workspace.Errors & limits
Every error has the same shape, plus an X-Request-Id header to quote to support.
{
"error": {
"code": "unauthorized",
"message": "Invalid or revoked API key.",
"detail": null
}
}401 unauthorized— missing, wrong or revoked key, or a route a key can't call.404 not_found— the id doesn't exist in the key's workspace.422 validation_failed— the body is invalid;detailsays which field.429 rate_limited— slow down and retry after theRetry-Afterseconds.