Docs
API reference
The HTTP API under /api/v1: authentication, errors and endpoints.
The HTTP API lives under /api/v1. It is described by OpenAPI at /api/v1/openapi.json, and this page is rendered from that description, so it lists exactly what the API serves. An interactive version is at /api/v1/docs.
#Authentication
The public catalog endpoints need no authentication. Everything else takes an Amber API key, scoped to one Workspace, sent as a bearer token:
curl -H "Authorization: Bearer $AMBER_API_KEY" https://amber.trycoredepth.com/api/v1/wallet
Create keys in your Workspace settings or with the CLI sign-in flow. A key is shown once and stored only as a hash. Every request is scoped by Workspace membership.
#Errors and pagination
Errors are JSON:
{ "error": { "code": "quote_expired", "message": "This Quote has expired." } }
List endpoints are paginated with cursors: pass limit (up to 100) and, from a previous page's next_cursor, cursor. The last page has a next_cursor of null. Rate limits apply per API key and per IP, and are strictest on /quotes.
#Catalog
The public Benchmarks, Models and curated Model Configurations. No authentication, and responses may be cached for a minute.
- GET
/api/v1/catalog/agentsList the Agent Versions, newest first Public. Returns
Page_CatalogAgentVersionOut_.- include_deprecated query
booleanAlso versions retired from new Jobs.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/catalog/benchmarksList the public Benchmarks Public. Returns
Page_BenchmarkOut_.- featured query
boolean | nullOnly (or never) featured ones.- task_kind query
TaskKind | nullHas a version of this kind.- source query
BenchmarkSource | nullHas a version from here.- q query
string | nullSearch name, slug and description.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/catalog/benchmarks/{slug}One public Benchmark, with its latest version and typical costs Public. Returns
BenchmarkDetailOut.- slug path, required
string
- GET
/api/v1/catalog/benchmarks/{slug}/versionsA Benchmark's version history, newest first Public. Returns
Page_BenchmarkVersionOut_.- slug path, required
string- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/catalog/model-configurationsList the curated Model Configurations Public. Returns
Page_ConfigurationOut_.- model query
string | nullSlug of the Model.- developer query
string | nullWho built the Model.- q query
string | nullSearch slug and name.- include_archived query
booleanAlso those retired from new Jobs.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/catalog/model-configurations/{slug}One curated Model Configuration Public. Returns
ConfigurationOut.- slug path, required
string
- GET
/api/v1/catalog/modelsList the Models, with their Providers and prices Public. Returns
Page_ModelOut_.- developer query
string | nullWho built it, e.g. `anthropic`.- q query
string | nullSearch slug, name and OpenRouter id.- curated query
boolean | nullOnly (or never) Models with a curated Model Configuration.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/catalog/models/{slug}One Model, with every Provider that serves it Public. Returns
ModelOut.- slug path, required
string
#Health
- GET
/api/v1/healthzLiveness probe Public. Returns
Health. - GET
/api/v1/readyzReadiness probe: the database answers Public. Returns
Health.
#Other endpoints
Groups appear here as the API gains them: Workspaces, API keys, Quotes and Jobs, Results, the Wallet, private Benchmarks and guided authoring.
Admin
- GET
/api/v1/admin/agentsList Agents with every Agent Version Returns
Page_AgentOut_.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- POST
/api/v1/admin/agentsCreate an Agent Returns
AgentOut. - POST
/api/v1/admin/agents/{agent_slug}/versionsPublish an immutable Agent Version Returns
AgentVersionOut.- agent_slug path, required
string
- POST
/api/v1/admin/agents/{agent_slug}/versions/{version}/deprecateStop offering an Agent Version for new Jobs Returns
AgentVersionOut.- agent_slug path, required
string- version path, required
string
- GET
/api/v1/admin/audit-logsThe audit log, newest first Returns
Page_AuditLogOut_.- workspace_id query
string (uuid) | null- action query
string | nullAn action (`wallet.credit`) or its prefix (`wallet.`).- actor_id query
string | null- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/admin/benchmarksList the public Benchmarks, hidden ones too Returns
Page_AdminBenchmarkOut_.- q query
string | nullSearch slug and name.- featured query
boolean | null- hidden query
boolean | null- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- PATCH
/api/v1/admin/benchmarks/{slug}Feature, hide, or set the Quote prior of a Benchmark Returns
AdminBenchmarkOut.- slug path, required
string
- GET
/api/v1/admin/jobsList Jobs of every Workspace, newest first Returns
Page_AdminJobOut_.- state query
JobState | null- workspace_id query
string (uuid) | null- purpose query
JobPurpose | null- active query
boolean | nullOnly Jobs that haven't finished (or only those that have).- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- POST
/api/v1/admin/jobs/{job_id}/cancelCancel a Job Returns
AdminJobOut.- job_id path, required
string (uuid)
- GET
/api/v1/admin/kill-switchWhether new Trials are stopped Returns
KillSwitchOut. - PUT
/api/v1/admin/kill-switchStop (or allow again) new Trials everywhere Returns
KillSwitchOut. - POST
/api/v1/admin/model-configurationsPublish a curated Model Configuration Returns
ConfigurationOut. - POST
/api/v1/admin/model-configurations/{slug}/archiveRetire a curated Model Configuration from new Jobs Returns
ConfigurationOut.- slug path, required
string
- GET
/api/v1/admin/model-syncHow the last price sync went Returns
ModelSyncStatus. - POST
/api/v1/admin/model-syncStart a price sync from OpenRouter Returns
ModelSyncStatus. - GET
/api/v1/admin/platform-settingsThe platform settings Returns
PlatformSettingsOut. - PATCH
/api/v1/admin/platform-settingsChange platform settings Returns
PlatformSettingsOut. - POST
/api/v1/admin/private-benchmarks/uploadsUpload Harbor Task folders into a Workspace (only if it allows staff access) Returns
UploadOut.- workspace_id query, required
string (uuid)The Workspace to upload into.
- GET
/api/v1/admin/reconciliationLiteLLM spend against Ledger charges, by Provider and day Returns
ReconciliationReport.- start query
string (date) | nullFirst UTC day. Default: 6 days before end.- end query
string (date) | nullLast UTC day. Default: today.- tolerance_micros query
integerDifferences up to this many micro-USD still reconcile.
- GET
/api/v1/admin/statusThe platform at a glance: settings and load Returns
PlatformStatus. - GET
/api/v1/admin/workspacesList Workspaces, newest first Returns
Page_AdminWorkspaceOut_.- q query
string | nullSearch name, address, or a member's email or user ID.- include_archived query
booleanAlso deleted Workspaces.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/admin/workspaces/{workspace_id}One Workspace: members, Wallet and Jobs Returns
AdminWorkspaceDetailOut.- workspace_id path, required
string (uuid)
- POST
/api/v1/admin/workspaces/{workspace_id}/adjustmentsAdjust the Wallet Returns
LedgerEntryOut.- workspace_id path, required
string (uuid)
- POST
/api/v1/admin/workspaces/{workspace_id}/creditsAdd credit Returns
LedgerEntryOut.- workspace_id path, required
string (uuid)
- GET
/api/v1/admin/workspaces/{workspace_id}/ledgerA Workspace's Wallet ledger, newest first Returns
Page_LedgerEntryOut_.- workspace_id path, required
string (uuid)- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/admin/workspaces/{workspace_id}/private-benchmarksA Workspace's private Benchmarks (only if it allows staff access) Returns
PrivateBenchmarkOut[].- workspace_id path, required
string (uuid)
- POST
/api/v1/admin/workspaces/{workspace_id}/private-benchmarksPublish a Benchmark Version into a Workspace (only if it allows staff access) Returns
PublishedOut.- workspace_id path, required
string (uuid)
- GET
/api/v1/admin/workspaces/{workspace_id}/private-benchmarks/uploadsA Workspace's uploads (only if it allows staff access) Returns
Page_UploadOut_.- workspace_id path, required
string (uuid)- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- GET
/api/v1/admin/workspaces/{workspace_id}/private-benchmarks/uploads/{upload_id}One of a Workspace's uploads (only if it allows staff access) Returns
UploadOut.- workspace_id path, required
string (uuid)- upload_id path, required
string (uuid)
- POST
/api/v1/admin/workspaces/{workspace_id}/private-benchmarks/uploads/{upload_id}/publishPublish an upload's validated Tasks (only if the Workspace allows staff access) Returns
UploadOut.- workspace_id path, required
string (uuid)- upload_id path, required
string (uuid)
- POST
/api/v1/admin/workspaces/{workspace_id}/private-benchmarks/uploads/{upload_id}/validateAccept an upload's validation Quote (only if the Workspace allows staff access) Returns
UploadOut.- workspace_id path, required
string (uuid)- upload_id path, required
string (uuid)
Api keys
- GET
/api/v1/api-keysList the Workspace's API keys Returns
Page_ApiKeyOut_.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/api-keysCreate an API key Returns
CreatedApiKey.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- DELETE
/api/v1/api-keys/{key_id}Revoke an API key
- key_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
Authoring
- GET
/api/v1/authoring/sessionsList the Workspace's authoring sessions Returns
Page_AuthoringSessionSummaryOut_.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/authoring/sessionsStart a guided authoring session (and get its Quote) Returns
AuthoringSessionOut.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/authoring/sessions/{session_id}Get an authoring session and its drafts Returns
AuthoringSessionOut.- session_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- PUT
/api/v1/authoring/sessions/{session_id}/files/{path}Write a file of a draft Returns
AuthoringSessionOut.- session_id path, required
string (uuid)- path path, required
string- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- DELETE
/api/v1/authoring/sessions/{session_id}/files/{path}Remove a file of a draft Returns
AuthoringSessionOut.- session_id path, required
string (uuid)- path path, required
string- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/authoring/sessions/{session_id}/publishPublish the drafts that passed as a private Benchmark Version Returns
AuthoringSessionOut.- session_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/authoring/sessions/{session_id}/validateQuote revalidating the edited drafts Returns
AuthoringSessionOut.- session_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/authoring/snapshotsUpload a repository snapshot for an authoring session Returns
AuthoringSnapshotOut.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
Cli
- POST
/api/v1/cli/device-codesStart a CLI login Public. Returns
DeviceCodeCreated. - GET
/api/v1/cli/device-codes/{user_code}Poll a CLI login Public. Returns
DeviceCodePoll.- user_code path, required
string- X-Device-Code header
string | null
- POST
/api/v1/cli/device-codes/{user_code}/approveApprove a CLI login Returns
DeviceCodeApproved.- user_code path, required
string
- POST
/api/v1/cli/device-codes/{user_code}/denyDeny a CLI login
- user_code path, required
string
- GET
/api/v1/cli/device-codes/{user_code}/detailsWhat a CLI login asks for Returns
DeviceCodeDetails.- user_code path, required
string
Results
- GET
/api/v1/comparisonsCompare Model Configurations Returns
ComparisonOut.- job_ids query, required
string (uuid)[]The Jobs to compare (repeat the parameter); their top-ups are included.- benchmark_version query
string (uuid) | nullThe Benchmark Version to compare on (default: the group with the most Model Configurations).- agent_version query
string (uuid) | nullThe Agent Version to compare on.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/jobs/{job_id}/exportExport a Job's results
- job_id path, required
string (uuid)- format query
ExportFormat`json`, `csv` or `html`.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- DELETE
/api/v1/jobs/{job_id}/transcriptsDelete a Job's transcripts Returns
JobOut.- job_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/trials/{trial_id}Get a Trial Returns
TrialDetailOut.- trial_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/trials/{trial_id}/transcriptGet a Trial's transcript Returns
TranscriptOut.- trial_id path, required
string (uuid)- attempt query
integer | nullWhich attempt (default: the last one).- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
Jobs
- GET
/api/v1/jobsList the Workspace's Jobs Returns
Page_JobOut_.- state query
JobState | nullOnly Jobs in this state.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/jobsStart a Job from a Quote Returns
JobOut.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/jobs/{job_id}Get a Job Returns
JobOut.- job_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/jobs/{job_id}/cancelCancel a Job Returns
JobOut.- job_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/jobs/{job_id}/eventsFollow a Job's progress (server-sent events)
- job_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/jobs/{job_id}/trialsList a Job's Trials Returns
Page_TrialOut_.- job_id path, required
string (uuid)- status query
TrialStatus | nullOnly Trials in this status.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
Me
- GET
/api/v1/meThe caller and the Workspaces they can use Returns
Me.
Model configurations
- GET
/api/v1/model-configurationsList the Workspace's custom Model Configurations Returns
Page_ConfigurationOut_.- include_archived query
booleanAlso those retired from new Jobs.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/model-configurationsCreate a custom Model Configuration Returns
ConfigurationOut.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/model-configurations/{slug}One of the Workspace's custom Model Configurations Returns
ConfigurationOut.- slug path, required
string- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- DELETE
/api/v1/model-configurations/{slug}Archive a custom Model Configuration Returns
ConfigurationOut.- slug path, required
string- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
Private benchmarks
- GET
/api/v1/private-benchmarksList the Workspace's private Benchmarks Returns
Page_BenchmarkOut_.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/private-benchmarks/uploadsList the Workspace's uploads Returns
Page_UploadOut_.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/private-benchmarks/uploadsUpload Harbor Task folders for a private Benchmark Returns
UploadOut.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/private-benchmarks/uploads/{upload_id}Get an upload and its validation Returns
UploadOut.- upload_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/private-benchmarks/{slug}/versionsList a private Benchmark's versions Returns
Page_BenchmarkVersionOut_.- slug path, required
string- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- POST
/api/v1/private-benchmarks/{upload_id}/publishPublish an upload's validated Tasks as a private Benchmark Version Returns
UploadOut.- upload_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
Quotes
- POST
/api/v1/quotesQuote a Job, or a top-up of one Returns
QuoteOut.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/quotes/{quote_id}One of the Workspace's Quotes Returns
QuoteOut.- quote_id path, required
string (uuid)- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
Wallet
- GET
/api/v1/walletThe Workspace's Wallet: balance, reservations and credit Returns
WalletDetailOut.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
- GET
/api/v1/wallet/ledgerThe Wallet's ledger, newest first Returns
Page_WalletLedgerEntryOut_.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.- X-Amber-Workspace header
string | nullWorkspace ID or slug; defaults to your personal Workspace.
Workspaces
- GET
/api/v1/workspacesList your Workspaces Returns
Page_WorkspaceOut_.- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- POST
/api/v1/workspacesCreate a Workspace Returns
WorkspaceOut. - GET
/api/v1/workspaces/{workspace_id}Get a Workspace Returns
WorkspaceOut.- workspace_id path, required
string (uuid)
- PATCH
/api/v1/workspaces/{workspace_id}Rename a Workspace or toggle staff access Returns
WorkspaceOut.- workspace_id path, required
string (uuid)
- DELETE
/api/v1/workspaces/{workspace_id}Delete a Workspace
- workspace_id path, required
string (uuid)
- GET
/api/v1/workspaces/{workspace_id}/provider-policyGet the Provider policy Returns
ProviderPolicy.- workspace_id path, required
string (uuid)
- PUT
/api/v1/workspaces/{workspace_id}/provider-policySet the Provider policy Returns
ProviderPolicy.- workspace_id path, required
string (uuid)
Members
- GET
/api/v1/workspaces/{workspace_id}/invitesList pending invites Returns
Page_InviteOut_.- workspace_id path, required
string (uuid)- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- POST
/api/v1/workspaces/{workspace_id}/invitesInvite someone by email Returns
InviteOut.- workspace_id path, required
string (uuid)
- DELETE
/api/v1/workspaces/{workspace_id}/invites/{invite_id}Revoke an invite
- invite_id path, required
string (uuid)- workspace_id path, required
string (uuid)
- GET
/api/v1/workspaces/{workspace_id}/membersList members Returns
Page_MemberOut_.- workspace_id path, required
string (uuid)- limit query
integerItems per page.- cursor query
string | nullFrom a previous page's next_cursor.
- PATCH
/api/v1/workspaces/{workspace_id}/members/{user_id}Change a member's role Returns
MemberOut.- user_id path, required
string- workspace_id path, required
string (uuid)
- DELETE
/api/v1/workspaces/{workspace_id}/members/{user_id}Remove a member, or leave
- user_id path, required
string- workspace_id path, required
string (uuid)