trickroom / Docs
Sign in

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/json for 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 after and limit. Pass next_cursor as the next request’s cursor; stop on an empty page or a null cursor.
Retries
Reuse the same Idempotency-Key and 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, and error.request_id. Branch on the code. The X-Request-Id response 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

Assistants

GET
/v1/applications/{id}/eval-runs/{runId}/export.jsonlExport a run's finished samples as JSON Lines: task, variant, rewards and model calls
POST
/v1/applications/{id}/eval-suitesCreate an immutable fixture evaluation suite
GET
/v1/applications/{id}/eval-suitesList evaluation suites
GET
/v1/applications/{id}/eval-suites/{suiteId}Read an evaluation suite
GET
/v1/applications/{id}/eval-suites/{suiteId}/tasksList a suite version's tasks in order
POST
/v1/applications/{id}/tasksetsCreate a taskset: a draft of evaluation tasks to publish as versions
GET
/v1/applications/{id}/tasksetsList tasksets
GET
/v1/applications/{id}/tasksets/{tasksetId}Read a taskset and its latest versions
PUT
/v1/applications/{id}/tasksets/{tasksetId}Rename a taskset or replace its scorers
GET
/v1/applications/{id}/tasksets/{tasksetId}/versionsList a taskset's versions, newest first
POST
/v1/applications/{id}/tasksets/{tasksetId}/webhook-secretMake a new secret its webhook scorers sign with; shown only in this response
POST
/v1/applications/{id}/tasksets/{tasksetId}/tasksAdd or replace draft tasks by ID
GET
/v1/applications/{id}/tasksets/{tasksetId}/tasksList a taskset's draft tasks by ID
POST
/v1/applications/{id}/tasksets/{tasksetId}/tasks/removeRemove draft tasks by ID
POST
/v1/applications/{id}/tasksets/{tasksetId}/tasks/importAdd draft tasks from the application's jobs, with their corrections as references
POST
/v1/applications/{id}/tasksets/{tasksetId}/publishPublish the draft as the next version, or return the latest if unchanged
GET
/v1/applications/{id}/reviewsRecent jobs to review, drawn evenly across harness versions, models and outcomes
POST
/v1/applications/{id}/reviews/compareRecord which of two jobs for the same task is better
POST
/v1/applications/{id}/decisionsLog a choice made at a decision point, with the logging policy's probability of it
GET
/v1/applications/{id}/decisionsList logged decisions, newest first
POST
/v1/applications/{id}/decisions/{decisionId}/rewardRecord the reward a logged decision earned
POST
/v1/applications/{id}/decisions/estimateEstimate a candidate policy's reward on a decision point's logged decisions
POST
/v1/applications/{id}/eval-runsRun a suite against pinned assistant versions
GET
/v1/applications/{id}/eval-runsList evaluation run projections
GET
/v1/applications/{id}/eval-runs/{runId}Read authoritative evaluation state and paired results
GET
/v1/applications/{id}/eval-runs/{runId}/samplesList a run's samples and their results by sample ID
POST
/v1/applications/{id}/eval-runs/{runId}/cancelRequest evaluation cancellation
GET
/v1/applications/{id}/assistantsList assistants
POST
/v1/applications/{id}/assistantsCreate an assistant and its initial deployed version
GET
/v1/applications/{id}/assistants/{assistantId}Read an assistant
GET
/v1/applications/{id}/assistants/{assistantId}/versionsList immutable assistant versions
POST
/v1/applications/{id}/assistants/{assistantId}/versionsCreate an assistant candidate version
POST
/v1/applications/{id}/assistants/{assistantId}/deploymentsDeploy or roll back an assistant version
GET
/v1/applications/{id}/conversationsList conversations
POST
/v1/applications/{id}/conversationsCreate a user conversation
GET
/v1/applications/{id}/conversations/{conversationId}Read a conversation
PUT
/v1/applications/{id}/conversations/{conversationId}Pause or resume new conversation work
POST
/v1/applications/{id}/conversations/{conversationId}/messagesSubmit a message and queue an assistant job
GET
/v1/applications/{id}/conversations/{conversationId}/messagesRead conversation messages
GET
/v1/applications/{id}/conversations/{conversationId}/memoriesRead explicit conversation memories
PUT
/v1/applications/{id}/conversations/{conversationId}/memories/{key}Set an attributed memory
DELETE
/v1/applications/{id}/conversations/{conversationId}/memories/{key}Forget a memory
GET
/v1/applications/{id}/conversations/{conversationId}/alertsRead a conversation's email alerts
PUT
/v1/applications/{id}/conversations/{conversationId}/alertsTurn on or change email alerts for a conversation
DELETE
/v1/applications/{id}/conversations/{conversationId}/alertsTurn off a conversation's email alerts
POST
/v1/applications/{id}/assistant-eventsWake an assistant from an external event
POST
/v1/applications/{id}/triggersSchedule a one-time or repeating assistant wakeup
GET
/v1/applications/{id}/triggersList scheduled triggers
POST
/v1/applications/{id}/triggers/{triggerId}/disableDisable a trigger
POST
/v1/applications/{id}/datasetsRegister an immutable external dataset reference
GET
/v1/applications/{id}/datasetsList dataset references
GET
/v1/applications/{id}/datasets/{datasetId}Read a dataset reference
POST
/v1/applications/{id}/pipeline-runsRegister an external ingestion, training, or evaluation run
GET
/v1/applications/{id}/pipeline-runsList externally reported pipeline runs
GET
/v1/applications/{id}/pipeline-runs/{runId}Read externally reported metrics and artifacts
PUT
/v1/applications/{id}/pipeline-runs/{runId}Report external run status, metrics, and artifacts
POST
/v1/applications/{id}/model-versionsRegister a model inference endpoint and optional training lineage
GET
/v1/applications/{id}/model-versionsList model versions without credentials
GET
/v1/applications/{id}/model-versions/{modelId}Read a model version without credentials
POST
/v1/applications/{id}/model-versions/{modelId}/revokeRevoke a model version for future execution
PUT
/v1/applications/{id}/model-versions/{modelId}/credentialRotate a model credential without changing its deployment
POST
/v1/applications/{id}/model-versions/{modelId}/testTest inference and tools using synthetic input (provider charges may apply)
POST
/v1/applications/{id}/subscriptionsCreate a durable pull subscription
GET
/v1/applications/{id}/subscriptionsList pull subscriptions
GET
/v1/applications/{id}/subscriptions/{subscriptionId}/eventsRead unacknowledged assistant and pipeline events
POST
/v1/applications/{id}/subscriptions/{subscriptionId}/ackAcknowledge delivered events
POST
/v1/applications/{id}/feedbackRecord feedback or a corrected assistant message
GET
/v1/applications/{id}/feedbackList feedback for external dataset curation
GET
/v1/applications/{id}/subscriptions/{subscriptionId}/events/streamStream a subscription's events as they happen