API reference
Call the REST API from your backend to register users, submit jobs, and retrieve results. All endpoints below use an application API key and the /v1 base path.
Authentication
Create a key in Settings → API keys. Send it as Authorization: Bearer tak_…. The key pins every request to that application. Store it on your server.
Environment
# Replace the origin with your deployment; locally use http://localhost:3000.
export TRICKROOM_API_URL="https://your-domain.example/v1"
export TRICKROOM_API_KEY="tak_REPLACE_WITH_YOUR_KEY"Examples use cURL or server-side TypeScript with native fetch. Replace sample resource IDs with IDs returned by your application. For an end-to-end example, follow the quickstart.
Requests and responses
- JSON
- Send
Content-Type: application/jsonfor request bodies. The body limit is 64,000 bytes. Event streams and artifact downloads use their documented media types. - Pagination
- Users, jobs, and event history accept
afterandlimit. Passnext_cursoras the next request’s cursor; stop on an empty page or a null cursor. - Retries
- Reuse the same
Idempotency-Keyand body when retrying job or flow submissions. A key is optional for jobs and required for flow runs, in the header or body. Conflicting inputs return 409. - Errors
- Errors contain
error.code,error.message, anderror.request_id. Branch on the code. TheX-Request-Idresponse header identifies the request for troubleshooting. - Compatibility
- Ignore unknown fields and event types. Breaking changes require a new major API version. Flows run within jobs; durable step recovery is not provided.
Endpoints
Applications
GET/v1/applicationGet the application this key belongs to/v1/applications/{id}Get your applicationUsers
GET/v1/usersList application users/v1/usersCreate or reuse an application user/v1/users/{id}Get a user and their computer/v1/users/{id}/computerAssign a persistent computer to a user/v1/users/{id}/computerDelete a user's computer/v1/users/{id}/computer/snapshotsSnapshot a user's Docker computer/v1/users/{id}/computer/snapshotsList a user's computer snapshots, newest first/v1/computer-snapshots/{id}Get a computer snapshot/v1/computer-snapshots/{id}Delete a computer snapshot/v1/computer-imagesList supported computer images and availabilityJobs
GET/v1/jobsList application jobs/v1/jobsSubmit an asynchronous job/v1/jobs/{id}Get current job state/v1/jobs/{id}/cancelRequest job cancellationEvents
GET/v1/jobs/{id}/eventsReplay durable job events/v1/jobs/{id}/events/streamStream durable events with cursor replayEvidence
GET/v1/jobs/{id}/reportGet verification results, diagnosis and evidence/v1/jobs/{id}/artifactsList saved screenshots and files/v1/jobs/{id}/recordingBuild or fetch a time-lapse recording/v1/jobs/{id}/artifacts/{artifactId}/contentDownload an authorized artifactConnections
GET/v1/users/{id}/connectionsList a user's connected accounts/v1/users/{id}/connections/gmailRegister an existing Gmail refresh token/v1/users/{id}/connect-linksCreate a link that connects a user's Google account/v1/users/{id}/connections/{connectionId}/revokeDisconnect an account locally/v1/applications/{id}/connectionsList connected accounts in the application/v1/applications/{id}/plugins/{pluginId}/tokenRegister a GitHub, Slack, or Figma credentialPlugins
GET/v1/applications/{id}/pluginsList available plugins and their permissions/v1/applications/{id}/plugins/{pluginId}Set application plugin permission/v1/toolsList tool capabilities and server availability/v1/web-policyGet the application's web access policyFlows
GET/v1/applications/{id}/flowsList active application flows/v1/applications/{id}/flowsCreate a saved flow/v1/applications/{id}/flows/{flowId}Get a saved flow/v1/applications/{id}/flows/{flowId}Replace a flow using its current version/v1/applications/{id}/flows/{flowId}/archiveArchive a flow and prevent new runs/v1/applications/{id}/flows/{flowId}/runsList the latest 50 flow runs/v1/applications/{id}/flows/{flowId}/runSubmit a versioned flow as a jobSkills
GET/v1/applications/{id}/skillsList an application's skills/v1/applications/{id}/skillsAdd an approved skill/v1/applications/{id}/skills/{skillId}Get a skill with its body/v1/applications/{id}/skills/{skillId}Edit a skill using its current version/v1/applications/{id}/skills/{skillId}/approveApprove a proposed skill or restore an archived one/v1/applications/{id}/skills/{skillId}/rejectReject a proposed skill/v1/applications/{id}/skills/{skillId}/archiveArchive an approved skill so new jobs no longer carry it/v1/applications/{id}/skill-packsList starter skill packs/v1/applications/{id}/skill-packs/{packId}Add a pack's skills to the applicationAssistants
GET/v1/applications/{id}/eval-runs/{runId}/export.jsonlExport a run's finished samples as JSON Lines: task, variant, rewards and model calls/v1/applications/{id}/eval-suitesCreate an immutable fixture evaluation suite/v1/applications/{id}/eval-suitesList evaluation suites/v1/applications/{id}/eval-suites/{suiteId}Read an evaluation suite/v1/applications/{id}/eval-suites/{suiteId}/tasksList a suite version's tasks in order/v1/applications/{id}/tasksetsCreate a taskset: a draft of evaluation tasks to publish as versions/v1/applications/{id}/tasksetsList tasksets/v1/applications/{id}/tasksets/{tasksetId}Read a taskset and its latest versions/v1/applications/{id}/tasksets/{tasksetId}Rename a taskset or replace its scorers/v1/applications/{id}/tasksets/{tasksetId}/versionsList a taskset's versions, newest first/v1/applications/{id}/tasksets/{tasksetId}/webhook-secretMake a new secret its webhook scorers sign with; shown only in this response/v1/applications/{id}/tasksets/{tasksetId}/tasksAdd or replace draft tasks by ID/v1/applications/{id}/tasksets/{tasksetId}/tasksList a taskset's draft tasks by ID/v1/applications/{id}/tasksets/{tasksetId}/tasks/removeRemove draft tasks by ID/v1/applications/{id}/tasksets/{tasksetId}/tasks/importAdd draft tasks from the application's jobs, with their corrections as references/v1/applications/{id}/tasksets/{tasksetId}/publishPublish the draft as the next version, or return the latest if unchanged/v1/applications/{id}/reviewsRecent jobs to review, drawn evenly across harness versions, models and outcomes/v1/applications/{id}/reviews/compareRecord which of two jobs for the same task is better/v1/applications/{id}/decisionsLog a choice made at a decision point, with the logging policy's probability of it/v1/applications/{id}/decisionsList logged decisions, newest first/v1/applications/{id}/decisions/{decisionId}/rewardRecord the reward a logged decision earned/v1/applications/{id}/decisions/estimateEstimate a candidate policy's reward on a decision point's logged decisions/v1/applications/{id}/eval-runsRun a suite against pinned assistant versions/v1/applications/{id}/eval-runsList evaluation run projections/v1/applications/{id}/eval-runs/{runId}Read authoritative evaluation state and paired results/v1/applications/{id}/eval-runs/{runId}/samplesList a run's samples and their results by sample ID/v1/applications/{id}/eval-runs/{runId}/cancelRequest evaluation cancellation/v1/applications/{id}/assistantsList assistants/v1/applications/{id}/assistantsCreate an assistant and its initial deployed version/v1/applications/{id}/assistants/{assistantId}Read an assistant/v1/applications/{id}/assistants/{assistantId}/versionsList immutable assistant versions/v1/applications/{id}/assistants/{assistantId}/versionsCreate an assistant candidate version/v1/applications/{id}/assistants/{assistantId}/deploymentsDeploy or roll back an assistant version/v1/applications/{id}/conversationsList conversations/v1/applications/{id}/conversationsCreate a user conversation/v1/applications/{id}/conversations/{conversationId}Read a conversation/v1/applications/{id}/conversations/{conversationId}Pause or resume new conversation work/v1/applications/{id}/conversations/{conversationId}/messagesSubmit a message and queue an assistant job/v1/applications/{id}/conversations/{conversationId}/messagesRead conversation messages/v1/applications/{id}/conversations/{conversationId}/memoriesRead explicit conversation memories/v1/applications/{id}/conversations/{conversationId}/memories/{key}Set an attributed memory/v1/applications/{id}/conversations/{conversationId}/memories/{key}Forget a memory/v1/applications/{id}/conversations/{conversationId}/alertsRead a conversation's email alerts/v1/applications/{id}/conversations/{conversationId}/alertsTurn on or change email alerts for a conversation/v1/applications/{id}/conversations/{conversationId}/alertsTurn off a conversation's email alerts/v1/applications/{id}/assistant-eventsWake an assistant from an external event/v1/applications/{id}/triggersSchedule a one-time or repeating assistant wakeup/v1/applications/{id}/triggersList scheduled triggers/v1/applications/{id}/triggers/{triggerId}/disableDisable a trigger/v1/applications/{id}/datasetsRegister an immutable external dataset reference/v1/applications/{id}/datasetsList dataset references/v1/applications/{id}/datasets/{datasetId}Read a dataset reference/v1/applications/{id}/pipeline-runsRegister an external ingestion, training, or evaluation run/v1/applications/{id}/pipeline-runsList externally reported pipeline runs/v1/applications/{id}/pipeline-runs/{runId}Read externally reported metrics and artifacts/v1/applications/{id}/pipeline-runs/{runId}Report external run status, metrics, and artifacts/v1/applications/{id}/model-versionsRegister a model inference endpoint and optional training lineage/v1/applications/{id}/model-versionsList model versions without credentials/v1/applications/{id}/model-versions/{modelId}Read a model version without credentials/v1/applications/{id}/model-versions/{modelId}/revokeRevoke a model version for future execution/v1/applications/{id}/model-versions/{modelId}/credentialRotate a model credential without changing its deployment/v1/applications/{id}/model-versions/{modelId}/testTest inference and tools using synthetic input (provider charges may apply)/v1/applications/{id}/subscriptionsCreate a durable pull subscription/v1/applications/{id}/subscriptionsList pull subscriptions/v1/applications/{id}/subscriptions/{subscriptionId}/eventsRead unacknowledged assistant and pipeline events/v1/applications/{id}/subscriptions/{subscriptionId}/ackAcknowledge delivered events/v1/applications/{id}/feedbackRecord feedback or a corrected assistant message/v1/applications/{id}/feedbackList feedback for external dataset curation/v1/applications/{id}/subscriptions/{subscriptionId}/events/streamStream a subscription's events as they happenModels
GET/v1/modelsList compatible managed models/v1/model-policyGet permitted models and default/v1/inference-usageGet provider costs and outstanding reservations/v1/applications/{id}/inference-retentionGet inference archive retention/v1/applications/{id}/inference-tracesList inference metadata without prompt or response content/v1/applications/{id}/inference-traces/{traceId}Retrieve retained inference content for inspection or eval preparation; needs traces:read/v1/applications/{id}/traces/export.jsonlExport production jobs that finished in a window, with rewards and model calls, as JSON Lines/v1/applications/{id}/preferences/export.jsonlExport preferences as DPO pairs or reviews and ratings as KTO labels, as JSON Lines