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.