Skip to content
Euler Docs

API reference

The hosted API is at https://api.euler.sudotank.com. It serves its own schema and interactive explorer:

https://api.euler.sudotank.com/openapi.json
https://api.euler.sudotank.com/docs

The versioned contract is committed at openapi/euler.openapi.json. Generated clients live in sdks/typescript and sdks/python; release tags publish them only when the repository has npm and PyPI tokens configured.

This page maps the surfaces by area. It is a map, not a substitute for the schema: request and response shapes come from openapi.json.

Conventions

export EULER_BASE_URL="https://api.euler.sudotank.com"
export EULER_TOKEN="…"
curl -fsS -H "Authorization: Bearer $EULER_TOKEN" "$EULER_BASE_URL/v1/projects"

Health

MethodPath
GET/healthz
GET/readyz
GET/openapi.json

Tenancy, identity and access

MethodPath
POST · GET/v1/tenants
POST/v1/login
POST/v1/signup
POST · GET/v1/users
PATCH/v1/users/{email}
POST · GET/v1/invites
POST/v1/invites/{invite_id}/resend
POST/v1/invites/{invite_id}/revoke
GET/v1/invites/lookup
POST/v1/invites/accept
POST · GET/v1/tokens
POST/v1/tokens/refresh
GET/v1/audit
POST/v1/secrets/seal

Workspaces and projects

MethodPath
GET/v1/use-cases
POST · GET/v1/workspaces
PUT/v1/workspaces/{workspace_id}/use-case
POST · GET/v1/projects
GET · DELETE/v1/projects/{project_id}
PUT/v1/projects/{project_id}/name
PUT/v1/projects/{project_id}/workspace
PUT/v1/projects/{project_id}/data-kind
PUT/v1/projects/{project_id}/target-profile
GET/v1/target-profiles
GET/v1/source-formats

Sources, uploads and runs

MethodPath
POST · GET/v1/projects/{project_id}/sources
POST/v1/projects/{project_id}/sources/upload
PUT/v1/projects/{project_id}/sources/{source_id}/name
POST/v1/projects/{project_id}/sources/{source_id}/test-connection
DELETE/v1/projects/{project_id}/sources/{source_id}
POST/v1/projects/{project_id}/uploads
PUT/v1/projects/{project_id}/uploads/{upload_id}/artifact
POST · GET/v1/projects/{project_id}/runs
POST/v1/projects/{project_id}/runs/{run_id}/cancel
POST · GET/v1/projects/{project_id}/runs/{run_id}/actions
GET/v1/projects/{project_id}/runs/{run_id}/checkpoints
POST/v1/projects/{project_id}/runs/{run_id}/checkpoints/resolve
POST/v1/projects/{project_id}/runs/{run_id}/ask
POST/v1/projects/{project_id}/command

Annotation

See annotation layers, pipeline settings, annotation jobs and the automated review pass.

MethodPathNotes
GET · PUT/v1/projects/{project_id}/annotation/settingsResolved layer catalog; write modes, per-layer config, model choice and presets
PUT/v1/workspaces/{workspace_id}/annotation/settingsWorkspace defaults
GET/v1/projects/{project_id}/annotation/statusWhat actually ran, per layer
GET/v1/projects/{project_id}/annotation/coveragePer-layer, per-kind coverage and quality; ?layer=, ?kind=
POST · GET/v1/projects/{project_id}/annotation/jobsEnqueue (202) and list. 409 already_produced unless force: true
GET/v1/projects/{project_id}/annotation/jobs/streamSSE progress feed
GET/v1/projects/{project_id}/annotation/jobs/{job_id}One job
POST/v1/projects/{project_id}/annotation/jobs/{job_id}/cancelCancel from queued or running
GET · PUT/v1/projects/{project_id}/ontology/summaryObserved classes with property distributions, joined against the declared ontology; rename, merge and declared-class edits

annotation_review is a valid layer_id on the jobs endpoint and is not an annotation-catalog layer; it grades what the other layers produced.

Synchronous per-episode annotation surfaces remain available alongside the queue:

MethodPath
POST/v1/projects/{project_id}/perception
PATCH/v1/projects/{project_id}/episodes/{episode_id}/annotation
PUT/v1/projects/{project_id}/episodes/{episode_id}/labels
POST/v1/projects/{project_id}/episodes/{episode_id}/labels/agent
POST · PUT/v1/projects/{project_id}/episodes/{episode_id}/dense-text
POST/v1/projects/{project_id}/episodes/{episode_id}/video/hand-pose
POST/v1/projects/{project_id}/episodes/{episode_id}/video/track
POST · PUT/v1/projects/{project_id}/episodes/{episode_id}/video/subtasks
PUT/v1/projects/{project_id}/episodes/{episode_id}/video/tracks
POST/v1/projects/{project_id}/episodes/{episode_id}/video-quality
POST/v1/projects/{project_id}/episodes/hand-overlay
PUT/v1/projects/{project_id}/ontology
GET · PUT/v1/workspaces/{workspace_id}/label-ontology

Readiness, utility and certification

See readiness and data utility.

MethodPath
GET · PUT/v1/projects/{project_id}/readiness/settings
GET/v1/projects/{project_id}/utility
POST/v1/projects/{project_id}/ablation
GET/v1/projects/{project_id}/distribution-gap
GET/v1/projects/{project_id}/target-readiness
GET/v1/projects/{project_id}/data-strategy
GET/v1/projects/{project_id}/vision-audit
GET · POST/v1/projects/{project_id}/certification/policies
GET/v1/projects/{project_id}/certification/report
GET/v1/projects/{project_id}/certification/report.html
POST/v1/projects/{project_id}/certification/export
POST/v1/projects/{project_id}/certification/import
POST/v1/projects/{project_id}/certification/audits

Episodes, review and media

MethodPath
GET/v1/projects/{project_id}/episodes
POST/v1/projects/{project_id}/episodes/{episode_id}/decision
POST/v1/projects/{project_id}/review/reroute
GET/v1/projects/{project_id}/episodes/{episode_id}/media
POST/v1/projects/{project_id}/episodes/{episode_id}/media-token
GET/v1/projects/{project_id}/episodes/{episode_id}/media-stream

Search, slices and curation

See curation and the search and slices recipe.

MethodPath
POST/v1/projects/{project_id}/search
POST/v1/projects/{project_id}/search/reindex
POST · GET/v1/projects/{project_id}/slices
GET/v1/projects/{project_id}/curation/strategies
POST/v1/projects/{project_id}/curation/preview
POST/v1/projects/{project_id}/curation/apply
GET/v1/projects/{project_id}/curation/recommend
POST/v1/projects/{project_id}/curate
POST/v1/projects/{project_id}/feedback/suggestions
POST/v1/projects/{project_id}/feedback/close-loop

Exports

MethodPath
POST · GET/v1/projects/{project_id}/exports
DELETE/v1/projects/{project_id}/exports/{export_id}
POST/v1/projects/{project_id}/exports/{export_id}/seal
GET/v1/projects/{project_id}/exports/{export_id}/download
GET/v1/projects/{project_id}/exports/{export_id}/artifact
GET/v1/projects/{project_id}/exports/{export_id}/archive
POST/v1/projects/{project_id}/reexport

Copilot

See Euler Copilot.

MethodPath
POST/v1/copilot/chat (SSE)
GET/v1/copilot/models
GET/v1/copilot/suggestions
POST · GET/v1/copilot/support
GET/v1/copilot/threads
GET · DELETE/v1/copilot/threads/{thread_id}

The earlier planning surface remains available:

MethodPath
POST/v1/agent/plan
POST/v1/agent/execute

Models, budget and cost

MethodPath
GET/v1/models
PUT/v1/models/{surface}
GET · PUT/v1/budget
GET/v1/costs
POST/v1/costs/simulate

GET /v1/models returns the active model per surface with its adoption evidence, cost note and vetted alternatives. PUT accepts only a vetted option on a user-selectable surface.