This endpoint generates speech audio through Light Speed Future's production API layer.
12.1 Endpoint and Authentication
| Field | Value |
|---|---|
| Endpoint | POST /v1/audio/speech |
| Base URL | https://ai-api.lightspeedfuture.com |
| Authorization | Bearer <LSF_API_KEY> |
| Content-Type | application/json |
12.2 Supported Modes
| Mode | Description | Notes |
|---|---|---|
| text_only | Generate speech from text | No reference media required |
| audio_url | Use public HTTPS audio reference | Up to three audio_url references; do not mix with image_url |
| image_url | Use public HTTPS image reference | One image_url reference; do not mix with audio_url |
| metadata.client_request_id | Idempotent replay | Recommended for safe retry |
12.3 Model Alias
Model alias
<YOUR_SEED_AUDIO_MODEL_ALIAS>
Light Speed Future onboarding contact provides the tenant-facing model alias. Customers should not use direct upstream model names.
12.4 Text-only Request Example
{
"model": "<YOUR_SEED_AUDIO_MODEL_ALIAS>",
"input": "Your text to generate as speech.",
"instructions": "Read in a calm, natural product-demo tone.",
"metadata": {
"client_request_id": "audio-job-20260704-0001"
}
}
Text length and safe retry
input is required unless instructions provides the full text to generate. The combined trimmed input and instructions text, including their separating newline, must be 3000 characters or less. Use the original client_request_id for the same logical replay. If a timeout leaves the outcome unknown, do not immediately create a fresh job.
12.5 audio_url Request Example
{
"model": "<YOUR_SEED_AUDIO_MODEL_ALIAS>",
"input": "Use @Audio1 as the reference style and read this short line naturally.",
"metadata": {
"client_request_id": "audio-job-20260704-0002",
"references": [
{
"type": "audio_url",
"url": "https://example.com/reference-audio.mp3"
}
]
}
}
- audio_url references must be public HTTPS URLs that are provider-accessible and stable long enough for provider-side download and processing.
- Up to three audio_url references are supported.
- Do not mix audio_url and image_url.
- Do not use audio_data or base64 audio input.
12.6 image_url Request Example
{
"model": "<YOUR_SEED_AUDIO_MODEL_ALIAS>",
"input": "Read this short product-demo line in a calm voice.",
"metadata": {
"client_request_id": "audio-job-20260704-0003",
"references": [
{
"type": "image_url",
"url": "https://example.com/reference-image.jpg"
}
]
}
}
- image_url references must be public HTTPS URLs that are provider-accessible and stable long enough for provider-side download and processing.
- One image_url reference is supported.
- Do not mix image_url and audio_url.
- Browser access alone does not guarantee provider-side access. A public URL may still fail if the provider cannot download or process it.
12.7 Response Example
{
"id": "aud_xxx",
"object": "audio.speech",
"created": 1780000000,
"model": "<YOUR_SEED_AUDIO_MODEL_ALIAS>",
"url": "<TEMPORARY_AUDIO_DOWNLOAD_LINK>",
"url_expires_at": 1780007200,
"duration": 4.08,
"original_duration": 4.08,
"usage": {
"type": "seconds",
"duration": 4.08,
"original_duration": 4.08
},
"metadata": {
"client_request_id": "audio-job-20260704-0001"
}
}
Download link expiration
The returned download link expires. Download and store the audio if long-term access is required.
12.8 Idempotency / Replay Behavior
- Use metadata.client_request_id for production retry safety.
- For the same logical generation request, retry with the same client_request_id so the API can return the original result without duplicate generation or duplicate charge.
- Use a fresh client_request_id for an intentionally new generation attempt after a confirmed failure or changed content. A client-side timeout alone does not confirm that the original generation failed.
- Do not reuse one client_request_id across different business jobs or different generation requests.
12.9 Billing Behavior
- Billing is based on successfully generated audio duration.
- Validation failures are not charged.
- If audio is not generated because of a provider-side failure, provider-side download/access failure, or timeout, applicable precharges are refunded according to service behavior and commercial terms.
- Use GET /v1/billing/balance to check the balance associated with the API key.
- Commercial pricing, invoices, top-ups, and settlement terms are governed by the applicable agreement with Light Speed Future.
12.10 Reference URL Requirements
Reference URLs must:
- use HTTPS;
- be public and provider-accessible;
- be stable long enough for provider-side download and processing;
- not require cookies, login, private headers, signed local access, VPN, or private network access;
- avoid redirects, anti-bot checks, or hotlink protection that can block provider-side fetching;
- not use localhost, private network URLs, file://, asset://, data: URLs, or base64 data.
Reference URL caveat
A URL that works in a browser may still fail if the provider cannot download or process it.
12.11 Unsupported in Seed Audio
Unsupported in the current Seed Audio customer endpoint:
- voice or custom voice selector fields;
- speaker clone or voice clone controls;
- audio_data;
- image_data;
- base64 audio or image input;
- data: URLs;
- file:// URLs;
- asset:// URLs;
- localhost or private network reference URLs;
- customer-supplied provider project fields.
Use documented fields only
Customers should use only the tenant-facing model alias and documented request fields provided by Light Speed Future.
12.12 Error Handling
Common causes of failed requests:
- combined input + instructions text exceeds 3000 characters;
- unsupported request field;
- invalid or inaccessible reference URL;
- unsupported media format;
- provider-side download or processing failure;
- timeout;
- idempotency conflict or reuse of client_request_id for a different request.
After a failed request
Fix the cause before starting a new attempt. Use a fresh client_request_id for that new job; preserve the old ID while investigating an unknown outcome.
Example validation error:
{
"error": {
"message": "audio_data is not supported for Seed Audio.",
"type": "invalid_request_error",
"param": "audio_data",
"code": "invalid_request_error"
}
}