Skip to content

Portal API /portal/v1

Everything the developer portal does is a JSON call you can make yourself, authenticated with the portal sign-in token (Authorization: Bearer <ID token>: the Identity Platform token the portal holds after the e-mail magic link), not an API key. Useful for provisioning keys from your own tooling.

Method & path Body / query Returns
GET /portal/v1/me user, organisations with projects and your role, pricing, voices, model
POST /portal/v1/orgs {name} new organisation (you are owner)
PATCH /portal/v1/orgs/{org} {name} rename (owner)
GET /portal/v1/orgs/{org}/members members with role and joined/invited state
POST /portal/v1/orgs/{org}/members {email, role?} invite by e-mail (owner); they land in this organisation on first sign-in
DELETE /portal/v1/orgs/{org}/members/{email} remove (owner; the last owner cannot be removed)
POST /portal/v1/projects {org_id, name} new project
PATCH /portal/v1/projects/{id} {name} rename
GET /portal/v1/keys?org_id&project_id? keys: id, name, prefix, voices, created_at, revoked_at, last_used_at (never the key itself)
POST /portal/v1/keys {project_id, name, voices?: ["anjura"]} {key, row}: the full key, shown only here
PATCH /portal/v1/keys/{id} {name?, voices?} update
DELETE /portal/v1/keys/{id} revoke, immediate
POST /portal/v1/playground-key {project_id} {key: "vt_pg_…", expires_in_s: 7200} short-lived key for browsers
GET /portal/v1/usage?org_id&project_id?&from?&to? unix seconds; default last 30 days totals, ttfa_p50_ms, ttfa_p95_ms, rtf_avg, per-day series, by_key, by_voice, by_endpoint
GET /portal/v1/requests?org_id&project_id?&limit? ≤ 500 recent requests with ttfa_ms, wall_ms, rtf, queue_ms, request_id
GET /portal/v1/billing?org_id months with audio_s, minutes, amount_inr at the current rate
GET|POST /portal/v1/voice-requests {org_id, voice_name, language, use_case, hours?, notes?} train-your-voice requests and their status

Errors follow the API's {"error": …} shape: 401 (no/invalid token), 403 (not a member / owners only), 404, 400. Organisation limits: 50 active keys. Getting a token programmatically: sign in with the Identity Platform REST API using the e-mail link flow, or use the portal and copy a token from the browser session for scripts; a service-account flow is on the roadmap.