Skip to content
DUETA
Docs

API reference

Every endpoint, by resource, with the page that explains it.

On this page

Base URL https://dueta.ai. JSON in and out unless a row says otherwise. Every authenticated route takes Authorization: Bearer with an API key or a session token, except the rows marked session-only. The page column links to the task that uses the route.

Auth

RouteWhat it doesAuthPage
POST/v1/auth/signupCreate an account. Answers a session token; 5 / minute per IP.none
POST/v1/auth/loginTrade email + password for a session token; 10 / minute per IP.none
POST/v1/auth/logoutClear the session cookie. 204, unauthenticated on purpose.none
GET/v1/auth/meThe signed-in account: email, verified_at, has_password, google_linked.session
GET/v1/auth/verify?token=The emailed verification link. Redirects to the console with ?status=ok or invalid.none
POST/v1/auth/verify/resendSend the verification email again. 202.none
POST/v1/auth/password/forgotEmail a reset link. 202 whether or not the address exists.none
POST/v1/auth/password/resetSet a new password from a reset token. 204, or 400 for a used or expired link.none
POST/v1/auth/password/changeChange the password with the current one. 204.session
POST/v1/auth/password/setGive a Google-only account a password. 204.session
GET/v1/auth/google/startBegin Google sign-in. Google sign-in isn't available yet: 501 until configured.none
POST/v1/auth/google/unlinkDetach Google. 409 unless the account also has a password.session

API keys

RouteWhat it doesAuthPage
POST/v1/keysCreate a key. The only response carrying the full secret.session
GET/v1/keysList key metadata: prefixes, never secrets.session
POST/v1/keys/{id}/rotateReplace the secret in place. The old one dies at once.session
DELETE/v1/keys/{id}Revoke. 204, idempotent.session

Uploads

RouteWhat it doesAuthPage
POST/v1/uploadsDeclare a recording. 201 with an id, content_url and events_url.key or session
PUT/v1/uploads/{id}/contentSend the bytes, raw. One request, or several with Content-Range.key or session
GET/v1/uploads/{id}State, bytes_received, duration, sample rate, checksum.key or session
GET/v1/uploads/{id}/eventsThe same upload as server-sent events.key or session
GET/v1/uploadsList uploads, newest first. limit, offset, state=.key or session
DELETE/v1/uploads/{id}Delete an upload and its bytes. 204, or 409 while a job uses it.key or session

Jobs

RouteWhat it doesAuthPage
POST/v1/jobs/quotePrice a set of uploads. Reserves nothing.key or session
POST/v1/jobs/separationDuplex: one mixed recording in, one track per speaker out.key or session
POST/v1/jobs/dominant-separationDominant: 2-10 close-mic recordings in, one clean track each plus the room.key or session
GET/v1/jobs/{id}Status, stage, progress, steps, queue_position, worker_alive, result.key or session
GET/v1/jobs/{id}/eventsThe same job as server-sent events.key or session
POST/v1/jobs/{id}/cancelCancel a queued or running job. 409 once terminal.key or session
GET/v1/jobsList jobs, newest first. limit, offset.key or session

Results

RouteWhat it doesAuthPage
GET/v1/jobs/{id}/stems/{name}One output track. WAV by default, ?format=flac for FLAC.key or session
GET/v1/jobs/{id}/archiveEvery stem in one streamed ZIP.key or session
GET/v1/jobs/{id}/inputs/{name}The original recording, in the container it arrived in.key or session

Shares

RouteWhat it doesAuthPage
POST/v1/jobs/{id}/sharePublish a succeeded job at a public link. 201.key or session
GET/v1/jobs/{id}/shareThe job's live share, or 404.key or session
DELETE/v1/jobs/{id}/shareRevoke. 204, immediate.key or session
GET/v1/shares/{token}The shared result. No credential.none
GET/v1/shares/{token}/stems/{n}One shared track, range-capable.none
GET/v1/shares/{token}/original/{n}One original input, range-capable.none

Billing & credit

RouteWhat it doesAuthPage
GET/v1/creditsBalance and the last 50 ledger rows.key or session
GET/v1/usageBilled seconds and dollars per UTC day. from=, to=.key or session
GET/v1/billing/topupTop-up bounds, presets, rate and charge currency. Public.none
POST/v1/billing/checkoutStart a top-up order for a whole-dollar amount.key or session
GET/v1/billing/ordersTop-up orders, newest first.key or session
GET/v1/billing/orders/{id}One order and its status.key or session
GET/v1/billing/auto-rechargeAuto-recharge settings and whether they can fire.key or session
PUT/v1/billing/auto-rechargeSave enabled, threshold_usd, amount_usd.key or session