Access and endpoints
Existing integrations use an issued client key, kept on their server, in an Authorization: Bearer header. There is no anonymous generation or self-service key issuance on this site.
https://jasiam.lovable.app
- GET /api/public/voice/voices
- Retrieve the supported voice catalog and default.
- POST /api/public/voice/preview
- Audition a selected voice with optional text up to 300 characters. Requires a key; generation is metered.
- POST /api/public/voice/speech
- Narrate text with a stable requestId and schoolId; optional voice, courseId, lessonId, and caller segments.
- GET / PUT / DELETE /api/public/voice/assignments
- Read, set, or remove school, course, and lesson voice defaults.
Wait on Generating
- Send the full request with a stable requestId. Keep the entire request unchanged when resuming.
- A 202 response with status Generating is progress. Wait retryAfterSec (normally 5 seconds), then repeat the same POST.
- Allow at least 90 seconds per call. On a network timeout, retry the same request rather than create a new ID.
- A 200 response with status Complete returns audioUrl and durationSec. Finished internal chunks are reused during resume.
- Handle 4xx errors explicitly. Back off on rate limits; transient server failures may be retried with the same request.
Optional caller segment timing
Send segments as an ordered array of id and text, optionally with startChar and endChar. When all offsets and full text are supplied, each segment is checked against its source slice; gaps between ranges are allowed. Only segment text is narrated in this mode. Completed responses aggregate real audio durations into ranges with the caller’s IDs. This is segment timing, not word-level forced alignment.
Existing text-only requests remain supported. Keep IDs, text, and offsets stable across retries. Your application owns the selection of narratable content.