fetch, curl, or http.Client calls.
TypeScript
Use
OrcapodsClient from browser, Node.js, or dashboard-adjacent code.Python
Use the sync or async
orcapods client.Go
Coming soon as a public module. The page covers status and calling the REST API from Go today.
VirtualFS
Talk to the standalone VirtualFS server: Python, TypeScript, plus the Claude and OpenAI Agents adapters.
When to use an SDK
Use an SDK for:- Onboarding users into a workspace by creating their first profile and run.
- Building product workflows that submit agent tasks and render streaming progress.
- Internal automation for tenants, pods, skills, MCP servers, secrets, memory, and storage.
- Test fixtures that need a typed client against a local conductor.
- You are debugging the raw API shape.
- You need an endpoint before the SDKs have been regenerated.
- You are integrating from a language that does not have a generated SDK yet.
Setup model
All SDKs target the Conductor base URL. The hosted default is:ao_ bearer API key, sent as Authorization: Bearer ao_.... The tenant is derived from that key: the server strips any client-supplied X-Tenant-ID, so you cannot select a tenant from the client. Create keys in the dashboard under Settings, then API Keys (see API keys).
Orca does not require an API key in the local development stack. In production, pass a tenant API key as the SDK bearer token. These keys use the
ao_<env>_<random> format, inherit the minter’s RBAC role, and require the conductor to run with Postgres plus AGENT_API_KEY_PEPPER.First workflow
The core onboarding flow is the same in every language:1
Check the conductor
Call
health to confirm the SDK can reach the configured base URL.2
Create or seed a profile
Use
profiles.create for a custom agent, or misc.seed_orca / SeedOrca to restore the built-in Orca helper profile.3
Create a run
Submit a task with a profile name, title, and prompt. The conductor can mint
runId and sessionId when they are empty.4
Stream events
Subscribe to the run stream and handle
progress, session_init, assistant, tool_call, tool_result, usage, result, and error events.Generated resources
Every SDK exposes the same resource groups, with language-specific casing.
See the SDK method map for the per-language names.
Regeneration
The SDKs are generated by Fern fromdocs/openapi.sdk.yaml using fern/generators.yml. The SDK spec is derived from the canonical full spec and strips operator-only, webhook, maintenance, and service-callback operations before generation.
make sdk-spec when you only need to refresh docs/openapi.sdk.yaml.
Generated SDK output is checked into:
sdks/typescriptsdks/python(the Python package modules live undersdks/python/src/orcapods)sdks/go
sdks/python; after regeneration, move generated package modules back under sdks/python/src/orcapods and leave pyproject.toml, README.md, and other package-root files at sdks/python.
Do not hand-edit generated SDK files for user-facing behavior. Update the OpenAPI contract or generator config, regenerate, then update these docs if method names or request shapes change.