API Reference
Instant Voice Links
Endpoints for creating and managing projectless (instant) voice links.
List instant (projectless) voice links
Endpoint
GET /v1/instant-voice-links
List instant (projectless) voice links for the authenticated user.
Required scope
voice_links:read
Response (200)
- success: boolean
- links: array of link objects (stored fields may vary)
- Each link includes: id, token, label, status, expiryPreset, expiresAt, timeLimitMinutes, prompt, landingPageTitle, landingPageInfo, createdAt, updatedAt
Errors
- 500: { "error": string }
Create instant voice links
Endpoint
POST /v1/instant-voice-links
Create multiple instant (projectless) voice links.
Required scope
voice_links:write
Body
- labels: string[] (required; 1+)
- expiryPreset: "1_day" | "1_week" | "1_month" (required)
- prompt: string (required)
- landingPageTitle: string (optional; defaults to "")
- landingPageInfo: string (optional; defaults to "")
- timeLimitMinutes: number (optional; defaults to 5, clamped to 1..60)
Response (200)
- success: boolean
- links: array — created links (includes ISO createdAt/updatedAt/expiresAt)
Errors
- 400: { "error": "Labels array is required" | "Invalid expiry preset" | "Prompt is required" | "All labels must be non-empty strings" }
- 500: { "error": string }
Update an instant voice link
Endpoint
PATCH /v1/instant-voice-links/{linkId}
Edit an existing instant link (label/expiry/prompt/landing page metadata).
Required scope
voice_links:write
Body (any of)
- label: string
- expiryPreset: "1_day" | "1_week" | "1_month"
- prompt: string
- landingPageTitle: string
- landingPageInfo: string
- timeLimitMinutes: number (clamped to 1..60)
Response (200)
- success: boolean
Errors
- 400: { "error": "Only active links can be edited" | "Label must be a non-empty string" | "Invalid expiry preset" | "Prompt must be a non-empty string" | "landingPageTitle must be a string" | "landingPageInfo must be a string" | "timeLimitMinutes must be a positive number" }
- 404: { "error": "Link not found" }
- 500: { "error": string }
Link statuses
The status field applies to both project-based and instant links. Treat unknown values as not active.
- "active": usable
- "used": consumed (a session has been started)
- "expired": no longer usable (expiresAt has passed)
- "cancelled": manually cancelled