Every API here is available over the APIs.io API and to AI agents over MCP.
{"openapi":"3.1.0","info":{"title":"Atako API","version":"0.1.0","description":"The Atako customer API — manage AI agents, their files, integrations, billing, and your company/team, programmatically.\n\n## Authentication\n\nEvery non-public endpoint takes a Bearer token that is either:\n- a **programmatic API key** (`aik_…`) — create one at [app.atako.ai](https://app.atako.ai) → Settings → API keys (company-admin only), or\n- a **Supabase session JWT** — what the web app itself sends; not practical to obtain outside a browser session.\n\n```bash\ncurl https://api.atako.ai/agents -H \"Authorization: Bearer aik_...\"\n```\n\nAn API key acts as its owning user, within the limits of the key:\n\n- **Scope** — a `read` key can only call GET operations (any other verb: `403 API_KEY_READ_ONLY`); a `write` key can call everything its user can, except the operations below.\n- **Forbidden to every key** — billing changes (every non-GET `/subscriptions/*`), minting agent tokens, listing or managing API keys (every `/users/api-keys` operation), deleting the account: `403 API_KEY_FORBIDDEN`. These need a signed-in user in the app.\n- **Expiry** — optional (30, 90 or 365 days); an expired key gets `401 API_KEY_EXPIRED`.\n\nEach operation carries `x-atako-api-key: read | write | forbidden` — the minimum key scope it needs, or `forbidden`.\n\n## Live events\n\n`GET /notifications/sse` and `GET /agents/{agentId}/events` are Server-Sent Events streams (`text/event-stream`), authenticated with the same Bearer header — an API key works.\n\n## Uploading a file\n\nTwo steps: `POST /client/files/nodes` then `POST /client/files/{nodeId}/upload-url` return a signed storage URL; `PUT` the raw bytes to it, then call `POST /client/files/{nodeId}/complete-upload`. Grant it to an agent with `POST /agents/{agentId}/file-grants`.\n\n## Other Atako HTTP surfaces (not covered by this spec)\n\n- **Atako MCP server** — `POST /mcp` (auth: same Bearer token as above) exposes the same capabilities as Model Context Protocol tools for AI clients (Claude Code, Claude Desktop, Cursor, ChatGPT), grouped in toolsets (`/mcp?toolsets=projects,agents`); a `read` key only gets read-only tools. See [docs.atako.ai/developers/mcp/overview](https://docs.atako.ai/developers/mcp/overview).\n- **Content API** (`cak_…` key, `/content/*`) — a separate, more restricted key type for headless CMS-style access to blog/news/use-case content. Not documented here.\n\n## Errors\n\nErrors use a JSON envelope: `{ \"error\": string, \"code\"?: string }`. `error` is either a short human-readable message or a SCREAMING_SNAKE_CASE code, depending on the route — treat it as an opaque string to match against, not a stable enum across the whole API.\n\n## Rate limits\n\nAuthenticated routes: 6000 requests/min per user (`authRateLimit`). Public GET routes: 60/min per IP. A handful of sensitive public POST routes (newsletter signup, signup email check, invitation preview) are limited to 10 requests / 15 min per IP.\n\n## Pagination\n\nList endpoints use either simple `limit`/`offset` query params (marketing content — a plain JSON array response, capped at the documented max) or `page`/`limit` (credit transactions). Neither returns a total count today; fetch until a page comes back shorter than `limit`."},"servers":[{"url":"https://api.atako.ai","description":"Production"}],"tags":[{"name":"Agents"},{"name":"Messages"},{"name":"Activity"},{"name":"Agent Options"},{"name":"API Keys"},{"name":"Files"},{"name":"Cron Jobs"},{"name":"Sub-Agents"},{"name":"Interagent Messages"},{"name":"Integrations"},{"name":"Subscriptions"},{"name":"Users"},{"name":"Company"},{"name":"Teams"},{"name":"Floor"},{"name":"Search"},{"name":"Notices"},{"name":"Organization"},{"name":"Projects"},{"name":"Notifications"},{"name":"Agent Shared Items"},{"name":"Agent Email"},{"name":"Agent Webhooks"},{"name":"Company Dashboard"},{"name":"LLM Provider Keys"},{"name":"Public"},{"name":"Marketing Content"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An `aik_…` programmatic API key (app.atako.ai → Settings → API keys) or a Supabase session JWT."}},"schemas":{"Error":{"type":"object","description":"Atako's standard error envelope. `error` is either a short human-readable message or a SCREAMING_SNAKE_CASE code (routes are inconsistent about which — treat it as an opaque string and match on it exactly if you need to branch on error type). Some routes add extra fields alongside `error` (see the operation's own error responses).","properties":{"error":{"type":"string"},"code":{"type":"string","description":"Present on some routes; a stable machine-readable code duplicating or refining `error`."}},"required":["error"],"additionalProperties":true},"LocalizedText":{"type":"object","description":"A French base value plus optional translations. `fr` is always present; other IETF locale keys are present when translated.","properties":{"fr":{"type":"string"},"en":{"type":"string"},"de":{"type":"string"},"es":{"type":"string"},"it":{"type":"string"},"pt-BR":{"type":"string"},"nl":{"type":"string"},"pl":{"type":"string"},"sv":{"type":"string"},"da":{"type":"string"},"tr":{"type":"string"},"ja":{"type":"string"},"ko":{"type":"string"}},"required":["fr"],"additionalProperties":{"type":"string"}},"LocalizedStringArray":{"type":"object","description":"Same shape as LocalizedText, but each locale holds a string array.","properties":{"fr":{"type":"array","items":{"type":"string"}}},"required":["fr"],"additionalProperties":{"type":"array","items":{"type":"string"}}},"AgentStatus":{"type":"string","enum":["active","completed","paused","provisioning","unresponsive","failed"]},"ActivitySummary":{"type":"object","nullable":true,"description":"In-memory working/idle snapshot for the agent, or null when nothing is tracked yet.","properties":{"working":{"type":"boolean"},"labelKey":{"type":"string"},"labelParams":{"type":"object","additionalProperties":{"type":"string"}}},"required":["working"]},"Agent":{"type":"object","description":"List-view agent summary, as returned by GET /agents.","properties":{"id":{"type":"string","format":"uuid"},"clientId":{"type":"string","format":"uuid"},"teamId":{"type":"string","format":"uuid","nullable":true},"teamName":{"type":"string","nullable":true},"scope":{"type":"string","enum":["personal","team"]},"access":{"type":"string","enum":["owner","team"]},"ownerName":{"type":"string"},"status":{"$ref":"#/components/schemas/AgentStatus"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time","nullable":true},"name":{"type":"string"},"image":{"type":"string","description":"PNG filename under apps/web/public/aiygents/."},"engine":{"type":"string","enum":["openclaw","hermes","opencode"]},"lastMessage":{"type":"object","nullable":true,"description":"List-view preview only — content truncated to 280 chars server-side.","properties":{"role":{"type":"string"},"content":{"type":"string","maxLength":280},"timestamp":{"type":"string","format":"date-time"}}},"hasUnreadMessages":{"type":"boolean"},"activity":{"$ref":"#/components/schemas/ActivitySummary"}},"required":["id","clientId","scope","access","status","name","image","engine","hasUnreadMessages"]},"AgentDetail":{"type":"object","description":"Single-agent detail, as returned by GET /agents/{id}.","properties":{"id":{"type":"string","format":"uuid"},"clientId":{"type":"string","format":"uuid"},"clientName":{"type":"string"},"clientCompany":{"type":"string","nullable":true},"teamId":{"type":"string","format":"uuid","nullable":true},"teamName":{"type":"string","nullable":true},"scope":{"type":"string","enum":["personal","team"]},"access":{"type":"string","enum":["owner","team"]},"status":{"$ref":"#/components/schemas/AgentStatus"},"startDate":{"type":"string","format":"date-time"},"activatedAt":{"type":"string","format":"date-time","nullable":true},"endDate":{"type":"string","format":"date-time","nullable":true},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true},"upgradingAt":{"type":"string","format":"date-time","nullable":true},"name":{"type":"string"},"image":{"type":"string"},"directModelId":{"type":"string","nullable":true,"description":"Raw model id for a direct-provider (BYOK openai/anthropic) agent; null for an OpenRouter-catalogue agent."},"modelName":{"type":"string","nullable":true,"description":"Display name of the agent's OpenRouter-catalogue model (ai_models.name); null for a direct-provider agent (see directModelId) or an agent left on the platform default."},"harnessName":{"type":"string","nullable":true,"description":"Display name of the agent's harness (harnesses.name); null when no harness was picked at creation — the runtime `engine` below is then the only harness."},"engine":{"type":"string","enum":["openclaw","hermes","opencode"]},"engineVersion":{"type":"string","nullable":true},"engineRequestedVersion":{"type":"string","nullable":true},"machineLost":{"type":"boolean"},"activity":{"$ref":"#/components/schemas/ActivitySummary"},"mission":{"type":"string","nullable":true,"description":"The agent's mission (1–3 sentences). Present only when the caller can administer the agent (`canManage`)."},"systemPrompt":{"type":"string","nullable":true,"description":"The agent's raw instructions. Present only when the caller can administer the agent."},"clientContext":{"type":"string","nullable":true,"description":"Per-agent business context. Present only when the caller can administer the agent."}},"required":["id","clientId","scope","access","status","name","image","engine","machineLost"]},"AgentRecord":{"type":"object","description":"The raw `agents` table row, returned verbatim by POST /agents (201) and POST /agents/{id}/end (200, under `.session`). Every column, including several operational/internal fields not otherwise exposed.","properties":{"id":{"type":"string","format":"uuid"},"clientId":{"type":"string","format":"uuid"},"teamId":{"type":"string","format":"uuid","nullable":true},"companyId":{"type":"string","format":"uuid","nullable":true},"name":{"type":"string"},"image":{"type":"string"},"systemPrompt":{"type":"string","nullable":true,"description":"Raw user instructions (no business context appended)."},"mission":{"type":"string","nullable":true},"profileUpdatedAt":{"type":"string","format":"date-time"},"modelId":{"type":"string","format":"uuid","nullable":true},"directModelId":{"type":"string","nullable":true},"modelConfig":{"type":"object","nullable":true,"description":"Per-task-type model overrides.","properties":{"vision":{"type":"string","nullable":true},"low_effort":{"type":"string","nullable":true},"medium_effort":{"type":"string","nullable":true},"high_effort":{"type":"string","nullable":true}}},"llmKeyId":{"type":"string","format":"uuid","nullable":true,"description":"Set for a BYOK agent (company LLM provider key); null for the platform key."},"harnessId":{"type":"string","format":"uuid","nullable":true},"engine":{"type":"string","enum":["openclaw","hermes","opencode"]},"status":{"$ref":"#/components/schemas/AgentStatus"},"agentAuthTokenHash":{"type":"string","nullable":true},"agentAuthIssuedAt":{"type":"string","format":"date-time","nullable":true},"agentAuthLastUsedAt":{"type":"string","format":"date-time","nullable":true},"startDate":{"type":"string","format":"date-time"},"activatedAt":{"type":"string","format":"date-time","nullable":true},"endDate":{"type":"string","format":"date-time","nullable":true},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true},"lastReadAt":{"type":"string","format":"date-time","nullable":true},"engineVersion":{"type":"string","nullable":true},"engineImage":{"type":"string","nullable":true},"engineRequestedVersion":{"type":"string","nullable":true},"upgradingAt":{"type":"string","format":"date-time","nullable":true},"upgradeRequestedAt":{"type":"string","format":"date-time","nullable":true},"upgradeStatus":{"type":"string","enum":["requested","running","succeeded","failed"],"nullable":true},"upgradeError":{"type":"string","nullable":true},"provisioningError":{"type":"string","nullable":true},"pausedAt":{"type":"string","format":"date-time","nullable":true},"pausedReason":{"type":"string","nullable":true},"clientContext":{"type":"string","nullable":true,"description":"Per-agent \"contexte business\" free text."},"createdAt":{"type":"string","format":"date-time"}},"required":["id","clientId","name","image","engine","status","startDate","createdAt"]},"CreateAgentBody":{"type":"object","required":["name","image"],"properties":{"name":{"type":"string","minLength":1},"image":{"type":"string","description":"PNG filename under apps/web/public/aiygents/."},"finish":{"type":"string","nullable":true,"enum":["carbone","chrome-studio","titane","candy","nacre-ormeau","velours","ceramique","marbre","terrazzo","cuir","jade","maille","mercure","lave","eau","glace","malachite","labradorite","calacatta","noyer","soie","ecailles"],"description":"The 3D body finish (the user-facing « skin »). Absent or null = carbone; unknown → 400 FINISH_INVALID."},"mission":{"type":"string","nullable":true,"maxLength":20000,"description":"The agent's mission in 1–3 sentences, trimmed."},"systemPrompt":{"type":"string","nullable":true,"maxLength":20000,"description":"Free-text agent instructions, trimmed. Stored and sent to the orchestrator as-is (no business context appended)."},"clientContext":{"type":"string","nullable":true,"maxLength":20000,"description":"Free-text per-agent business context, trimmed. Kept in its own column."},"modelId":{"type":"string","description":"Either an `ai_models` UUID (from GET /models or `aiModelId` in GET /models/catalog) or a raw OpenRouter slug (`slug` in GET /models/catalog, e.g. \"mistralai/mistral-small\"). A slug unknown to the catalog is rejected with 400. Omitted → admin-declared default model. With a direct-provider BYOK key (openai/anthropic), this is instead the provider's own model id.","example":"anthropic/claude-sonnet-4"},"harnessId":{"type":"string","format":"uuid","description":"From GET /harnesses."},"teamId":{"type":"string","format":"uuid","nullable":true,"description":"Assigns the agent to a shared team instead of keeping it personal."},"modelConfig":{"type":"object","description":"Per-task-type model overrides, forwarded to the orchestrator webhook.","properties":{"vision":{"type":"string","nullable":true},"low_effort":{"type":"string","nullable":true},"medium_effort":{"type":"string","nullable":true},"high_effort":{"type":"string","nullable":true}}},"engine":{"type":"string","enum":["openclaw","hermes","opencode"],"description":"Defaults to the platform default engine (hermes). `opencode` additionally requires `allowedRepos`."},"allowedRepos":{"type":"array","items":{"type":"string"},"description":"Repositories (`owner/repo`) the agent may work on. REQUIRED (≥1) for `engine: opencode`, which also requires an active company GitHub connection; ignored by the other engines."},"llmKeyId":{"type":"string","format":"uuid","description":"BYOK: id of a company LLM provider key (see docs — BYOK key management is not part of this customer API cut)."}}},"UpgradeStatus":{"type":"object","properties":{"available":{"type":"boolean","description":"True only when `target` is strictly semver-newer than `current`."},"current":{"type":"string","nullable":true},"target":{"type":"string","nullable":true},"upgrading":{"type":"boolean"},"upgradeStatus":{"type":"string","enum":["requested","running","succeeded","failed"],"nullable":true},"upgradeError":{"type":"string","nullable":true}},"required":["available","upgrading"]},"AiModel":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"modelId":{"type":"string","description":"OpenRouter-style model id, e.g. \"openai/gpt-4-turbo\"."},"name":{"type":"string"},"logoUrl":{"type":"string","nullable":true},"termsUrl":{"type":"string","nullable":true},"visible":{"type":"boolean"},"taskTypes":{"type":"array","items":{"type":"string"}},"contextLength":{"type":"integer","nullable":true},"isFree":{"type":"boolean"},"isDefault":{"type":"boolean"},"recommendedFor":{"type":"array","items":{"type":"string"},"description":"Task types this model is the admin-curated recommendation for (e.g. 'vision', 'low_effort')."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","modelId","name","visible"]},"CatalogModel":{"type":"object","required":["slug","name","provider","providerLabel","suggested","isDefault"],"properties":{"slug":{"type":"string","description":"OpenRouter model id, e.g. \"anthropic/claude-sonnet-4\"."},"name":{"type":"string","description":"OpenRouter display name, e.g. \"Anthropic: Claude Sonnet 4\"."},"provider":{"type":"string","description":"Slug prefix before '/'."},"providerLabel":{"type":"string","description":"Human label — the name prefix before ':', else the capitalized provider."},"description":{"type":"string","nullable":true},"contextLength":{"type":"integer","nullable":true,"description":"No provider pricing is exposed to clients: Atako sells inference at its own rate."},"suggested":{"type":"boolean","description":"Recommended by Atako (`ai_models.visible`)."},"isDefault":{"type":"boolean","description":"Preselected when the client picks nothing."},"aiModelId":{"type":"string","format":"uuid","nullable":true,"description":"Catalog row id, present once anyone launched an agent on this model."}}},"RecentModel":{"type":"object","required":["slug","name","lastUsedAt"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"lastUsedAt":{"type":"string","format":"date-time","description":"Creation date of the most recent company agent using this model."}}},"Harness":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"logoUrl":{"type":"string","nullable":true},"termsUrl":{"type":"string","nullable":true},"visible":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","visible"]},"Conversation":{"type":"object","description":"One chat session between the caller and an agent. A user may hold several; see docs/specs/agent-sessions.md.","properties":{"id":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"key":{"type":"string","description":"Opaque engine-side key of this thread — the bare user id for the historical thread, `chat:<conversationId>` for every session created since. Read-only."},"title":{"type":"string","nullable":true,"description":"Derived from the first user message when not set explicitly."},"meta":{"type":"object","additionalProperties":true,"description":"Free-form per-session payload."},"archived":{"type":"boolean"},"unreadCount":{"type":"integer","description":"Agent messages newer than this session's read cursor."},"lastReadAt":{"type":"string","format":"date-time","nullable":true},"lastMessageAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","agentId","key","title","archived","unreadCount","createdAt"]},"Message":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"conversationId":{"type":"string","format":"uuid","description":"Session this message belongs to."},"role":{"type":"string","enum":["user","agent"]},"content":{"type":"string"},"meta":{"type":"object","additionalProperties":true},"flaggedAsError":{"type":"boolean","description":"Deprecated — see `feedback`."},"deliveryState":{"type":"string"},"feedback":{"type":"string","enum":["up","down"],"description":"The caller's thumbs up/down on this agent reply, if any."},"timestamp":{"type":"string","format":"date-time"}},"required":["id","agentId","role","content","timestamp"]},"ActivityEvent":{"type":"object","description":"One entry of the live-activity feed (GET /agents/{agentId}/activity).","properties":{"id":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"eventId":{"type":"string"},"seq":{"type":"number"},"ts":{"type":"string","format":"date-time"},"origin":{"type":"object","description":"Discriminated on `kind`: 'chat' | 'cron' | 'subagent' | 'system' | 'email' | 'webhook' | 'interagent', each with kind-specific extra fields (conversationKey, cronJobId, subAgentId, threadId, endpointId, contextId, …).","properties":{"kind":{"type":"string","enum":["chat","cron","subagent","system","email","webhook","interagent"]}},"required":["kind"],"additionalProperties":true},"conversationId":{"type":"string","format":"uuid","description":"Chat-origin events only: the session this event belongs to. Absent on agent-wide origins (cron/subagent/system/email/webhook/interagent)."},"turnId":{"type":"string"},"type":{"type":"string","enum":["turn.started","turn.finished","thinking.step","tool.started","tool.finished","plan.updated","subagent.started","subagent.finished","integration.call","llm_call"]},"category":{"type":"string","enum":["web","files","memory","code","integration","planning","delegation","llm","other"]},"labelKey":{"type":"string"},"labelParams":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string","enum":["running","ok","error"]},"durationMs":{"type":"number"},"detail":{"type":"object","description":"Event-type-specific extra data (tool name/args/result previews, token counts, todos, integration call info, error message, …).","additionalProperties":true}},"required":["id","agentId","eventId","seq","ts","type","labelKey"]},"ActivityState":{"type":"object","properties":{"working":{"type":"boolean"},"labelKey":{"type":"string"},"labelParams":{"type":"object","additionalProperties":{"type":"string"}},"since":{"type":"string","format":"date-time"},"lastPlan":{"type":"object","properties":{"todos":{"type":"array","items":{"type":"object","properties":{"content":{"type":"string"},"status":{"type":"string"}}}},"ts":{"type":"string","format":"date-time"}}},"queued":{"type":"object","nullable":true,"description":"Message of the requested conversation (`?conversationId=`) queued behind a background turn; null otherwise.","properties":{"agentId":{"type":"string","format":"uuid"},"conversationId":{"type":"string","format":"uuid"},"messageId":{"type":"string","format":"uuid"},"busy":{"type":"object","properties":{"kind":{"type":"string","enum":["interagent","cron","internal","email","webhook","chat","subagent","system"]},"peerAgentId":{"type":"string","format":"uuid"},"peerName":{"type":"string"},"since":{"type":"string","format":"date-time"}},"required":["kind","since"]}}}},"required":["working","since"]},"FileNode":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"clientId":{"type":"string","format":"uuid"},"parentId":{"type":"string","format":"uuid","nullable":true},"type":{"type":"string","enum":["folder","file"]},"name":{"type":"string"},"storagePath":{"type":"string","nullable":true},"mimeType":{"type":"string","nullable":true},"fileSize":{"type":"integer","nullable":true},"agentTag":{"type":"string","format":"uuid","nullable":true},"uploadSource":{"type":"string","enum":["client","agent"],"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","clientId","type","name","createdAt"]},"SignedDownloadUrl":{"type":"object","properties":{"signedUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"integer","description":"Seconds; 3600."}},"required":["signedUrl","expiresIn"]},"SignedUploadUrl":{"type":"object","properties":{"signedUrl":{"type":"string","format":"uri"},"storagePath":{"type":"string"},"token":{"type":"string"}},"required":["signedUrl","storagePath","token"]},"FileGrant":{"type":"object","description":"A client file/folder granted to an agent (GET/POST /agents/{agentId}/file-grants).","properties":{"id":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"nodeId":{"type":"string","format":"uuid"},"grantedBy":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"node":{"type":"object","description":"Only present on the list endpoint (joined).","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string","enum":["folder","file"]},"storagePath":{"type":"string","nullable":true},"mimeType":{"type":"string","nullable":true},"fileSize":{"type":"integer","nullable":true},"parentId":{"type":"string","format":"uuid","nullable":true},"agentTag":{"type":"string","format":"uuid","nullable":true},"uploadSource":{"type":"string","enum":["client","agent"],"nullable":true}}}},"required":["id","agentId","nodeId","createdAt"]},"DedicatedFolderResult":{"type":"object","properties":{"folder":{"$ref":"#/components/schemas/FileNode"},"grant":{"allOf":[{"$ref":"#/components/schemas/FileGrant"}],"nullable":true},"existing":{"type":"boolean"}},"required":["folder","existing"]},"CronExecution":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"cronJobId":{"type":"string","format":"uuid"},"state":{"type":"string","enum":["running","success","failed"]},"startedAt":{"type":"string","format":"date-time"},"finishedAt":{"type":"string","format":"date-time","nullable":true},"durationMs":{"type":"integer","nullable":true},"error":{"type":"string","nullable":true},"output":{"type":"string","nullable":true,"description":"Execution content (F1.1, agent-cron-channel). Always null on GET /agents/{agentId}/cron-jobs (perf(projects-cron), PLAN-perf.md E3) — read it via GET /agents/{agentId}/cron-jobs/{jobId}/executions/{executionId} instead."},"outputPreview":{"type":"string","nullable":true,"description":"Truncated preview of execution content (max 280 chars) for list display only. Not returned on other endpoints."},"summary":{"type":"string","nullable":true},"businessState":{"type":"string","enum":["ok","failed"],"nullable":true},"noChange":{"type":"boolean","description":"Monitor-mode run where nothing changed (successful, no output). Never posted to the chat."},"createdAt":{"type":"string","format":"date-time"}},"required":["id","cronJobId","state","startedAt"]},"CronExecutionOutput":{"type":"object","description":"One execution's full output, read on demand (perf(projects-cron), PLAN-perf.md E3).","properties":{"id":{"type":"string","format":"uuid"},"output":{"type":"string","nullable":true}},"required":["id","output"]},"CronJob":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string"},"prompt":{"type":"string"},"schedule":{"type":"string","description":"Cron expression (or a deterministic \"once at <ts>\" one-shot)."},"nextRunAt":{"type":"string","format":"date-time","nullable":true},"lastRunAt":{"type":"string","format":"date-time","nullable":true},"lastRunState":{"type":"string","enum":["running","success","failed"],"nullable":true},"enabled":{"type":"boolean"},"timezone":{"type":"string","nullable":true},"repeatTimes":{"type":"integer","nullable":true,"description":"Total planned runs reported by the engine; null = infinite or unknown. A success of a job with a finite count is also posted to the owner's conversation."},"paused":{"type":"boolean","description":"Job paused engine-side."},"pausedReason":{"type":"string","nullable":true},"mode":{"type":"string","enum":["agent","monitor"],"description":"monitor = watch job, silent while nothing changes."},"continuity":{"type":"boolean","description":"Session continuity between runs."},"reasoningEffort":{"type":"string","nullable":true},"archivedAt":{"type":"string","format":"date-time","nullable":true},"stoppedAt":{"type":"string","format":"date-time","nullable":true,"description":"Stopped from the UI (POST .../stop). A stopped job is always archived and disabled."},"stoppedBy":{"type":"string","format":"uuid","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"executions":{"type":"array","description":"Up to 20 most recent executions.","items":{"$ref":"#/components/schemas/CronExecution"}}},"required":["id","agentId","title","prompt","schedule","enabled","createdAt"]},"CronJobsResponse":{"type":"object","properties":{"channelEnabled":{"type":"boolean","description":"AGENT_CRON_CHANNEL_ENABLED."},"canManage":{"type":"boolean","description":"The caller may stop a job (owner or company admin)."},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/CronJob"}}},"required":["channelEnabled","jobs"]},"SubAgent":{"type":"object","description":"Deduplicated by name (case-insensitive) — most recent run per logical sub-agent.","properties":{"id":{"type":"string","format":"uuid"},"agentId":{"type":"string","format":"uuid"},"engineId":{"type":"string"},"name":{"type":"string"},"model":{"type":"string","nullable":true},"status":{"type":"string","enum":["queued","running","succeeded","failed","timed_out","cancelled"]},"startedAt":{"type":"string","format":"date-time","nullable":true},"durationMs":{"type":"integer","nullable":true,"description":"Hermes only."},"toolCalls":{"type":"integer","nullable":true,"description":"Hermes only."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","agentId","engineId","name","status"]},"InteragentMessageListItem":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"direction":{"type":"string","enum":["sent","received"]},"peerAgentId":{"type":"string","format":"uuid"},"peerAgentName":{"type":"string"},"peerAgentImage":{"type":"string"},"subject":{"type":"string","nullable":true},"bodyPreview":{"type":"string","maxLength":300},"deliveryState":{"type":"string","enum":["pending_agent","delivered"]},"contextId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"hopCount":{"type":"integer"},"replyToId":{"type":"string","format":"uuid","nullable":true}},"required":["id","direction","peerAgentId","deliveryState","contextId","createdAt"]},"InteragentMessageDetail":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fromAgentId":{"type":"string","format":"uuid"},"fromAgentName":{"type":"string"},"toAgentId":{"type":"string","format":"uuid"},"toAgentName":{"type":"string"},"subject":{"type":"string","nullable":true},"body":{"type":"string"},"payload":{"description":"Arbitrary jsonb, nullable.","nullable":true},"processingNote":{"type":"string","nullable":true},"deliveryState":{"type":"string","enum":["pending_agent","delivered"]},"contextId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"deliveredToAgentAt":{"type":"string","format":"date-time","nullable":true},"hopCount":{"type":"integer"},"replyToId":{"type":"string","format":"uuid","nullable":true}},"required":["id","fromAgentId","toAgentId","body","deliveryState","contextId","createdAt"]},"IntegrationCatalogEntry":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"authType":{"type":"string","enum":["api_key","oauth2","mcp","internal"]},"baseUrl":{"type":"string"},"logo":{"type":"string"},"description":{"type":"string","nullable":true},"docsUrl":{"type":"string","nullable":true},"keyHelp":{"type":"string","nullable":true},"secretLabel":{"type":"string","nullable":true},"configFields":{"type":"array","description":"Connector-defined config field descriptors.","items":{"type":"object","additionalProperties":true}},"oauthConfigured":{"type":"boolean","nullable":true},"apiKeyAlt":{"type":"boolean"},"oauthSkipsConfig":{"type":"boolean"},"availability":{"type":"string","enum":["available","coming_soon"]},"companyWide":{"type":"boolean","description":"Native platform capability (e.g. 'projects'): its connection is a company-wide singleton, resolved lazily wherever needed — never manually connected."},"defaultGranted":{"type":"boolean","description":"Paired with companyWide: every agent of the company holds a virtual full grant on this connection until an explicit grant row (opt-out or adjustment) exists — see IntegrationGrant.isDefault."},"nonDeletable":{"type":"boolean","description":"The connection can't be disconnected — DELETE /integrations/connections/{id} refuses with connection_not_deletable."},"actions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"scope":{"type":"string"},"description":{"type":"string"}}}}},"required":["key","name","authType","availability"]},"IntegrationConnection":{"type":"object","description":"Never
# --- truncated at 32 KB (571 KB total) ---
# Full source: https://artifacts.apis.io/atako-ai/openapi/_original/atako-ai-api-openapi.json