Images & Audio
/api/gate/v1/images/generations
Generate Images
Create one or more images from a text prompt. OpenAI-compatible — drop-in for the ``openai`` Python SDK by setting ``base_url='https://spideriq.ai/api/gate/v1'``. Uses an OpenAI ``sk-...`` key from the SpiderGate pool (brand-scoped first, then shared pool fallback). Per-call billed against that OpenAI account.
200Successful image generation400Invalid request401Authentication error429Rate limit exceeded500Internal error503No OpenAI key available in the pool422Validation Error
curl -X POST 'https://spideriq.ai/api/gate/v1/images/generations' \
-H 'Authorization: Bearer ' \
-H 'Content-Type: application/json' \
-d '{
"model": "dall-e-3",
"prompt": "A spider weaving a gate, cinematic lighting",
"n": 1,
"size": "1024x1024"
}'
import httpx
resp = httpx.post(
"https://spideriq.ai/api/gate/v1/images/generations",
headers={"Authorization": "Bearer ", "Content-Type": "application/json"},
json={"model": "dall-e-3", "prompt": "A spider weaving a gate, cinematic lighting", "n": 1, "size": "1024x1024"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/images/generations", {
method: "POST",
headers: { "Authorization": "Bearer ", "Content-Type": "application/json" },
body: JSON.stringify({"model": "dall-e-3", "prompt": "A spider weaving a gate, cinematic lighting", "n": 1, "size": "1024x1024"})
});
const data = await resp.json();
console.log(data);
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"model": "dall-e-3", "prompt": "A spider weaving a gate, cinematic lighting", "n": 1, "size": "1024x1024"}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/gate/v1/images/generations", body)
req.Header.Set("Authorization", "Bearer ")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}
Request body
{"n":1,"size":"1024x1024","model":"dall-e-3","prompt":"A spider weaving a gate, cinematic lighting"}
/api/gate/v1/audio/speech
Generate Speech (TTS)
Synthesise speech from text using an OpenAI TTS model. Streams the audio bytes back in the requested format (mp3 default). OpenAI-compatible — drop-in for the ``openai`` SDK's ``audio.speech.create`` with ``base_url='https://spideriq.ai/api/gate/v1'``.
200Audio bytes in the requested format400Invalid request401Authentication error429Rate limit exceeded500Internal error503No OpenAI key available in the pool422Validation Error
curl -X POST 'https://spideriq.ai/api/gate/v1/audio/speech' \
-H 'Authorization: Bearer ' \
-H 'Content-Type: application/json' \
-d '{
"model": "tts-1",
"voice": "alloy",
"input": "Your agents are running."
}'
import httpx
resp = httpx.post(
"https://spideriq.ai/api/gate/v1/audio/speech",
headers={"Authorization": "Bearer ", "Content-Type": "application/json"},
json={"model": "tts-1", "voice": "alloy", "input": "Your agents are running."},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/audio/speech", {
method: "POST",
headers: { "Authorization": "Bearer ", "Content-Type": "application/json" },
body: JSON.stringify({"model": "tts-1", "voice": "alloy", "input": "Your agents are running."})
});
const data = await resp.json();
console.log(data);
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"model": "tts-1", "voice": "alloy", "input": "Your agents are running."}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/gate/v1/audio/speech", body)
req.Header.Set("Authorization", "Bearer ")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}
Request body
{"input":"Your agents are running.","model":"tts-1","voice":"alloy"}
/api/gate/v1/audio/transcriptions
Transcribe Audio (STT)
Transcribe audio to text using OpenAI's Whisper (or gpt-4o-transcribe / gpt-4o-mini-transcribe). Accepts ``multipart/form-data`` with a ``file`` field — same shape as ``openai.Audio.transcriptions.create()``. Drop-in for the ``openai`` SDK with ``base_url='https://spideriq.ai/api/gate/v1'``.
200Successful transcription400Invalid request401Authentication error413File too large429Rate limit exceeded500Internal error503No OpenAI key available in the pool422Validation Error
curl -X POST 'https://spideriq.ai/api/gate/v1/audio/transcriptions' \
-H 'Authorization: Bearer ' \
-H 'Content-Type: application/json' \
-d '{
"file": "string",
"model": "string",
"language": "string",
"prompt": "string",
"response_format": "string",
"temperature": 0.0
}'
import httpx
resp = httpx.post(
"https://spideriq.ai/api/gate/v1/audio/transcriptions",
headers={"Authorization": "Bearer ", "Content-Type": "application/json"},
json={"file": "string", "model": "string", "language": "string", "prompt": "string", "response_format": "string", "temperature": 0.0},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://spideriq.ai/api/gate/v1/audio/transcriptions", {
method: "POST",
headers: { "Authorization": "Bearer ", "Content-Type": "application/json" },
body: JSON.stringify({"file": "string", "model": "string", "language": "string", "prompt": "string", "response_format": "string", "temperature": 0.0})
});
const data = await resp.json();
console.log(data);
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"file": "string", "model": "string", "language": "string", "prompt": "string", "response_format": "string", "temperature": 0.0}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/gate/v1/audio/transcriptions", body)
req.Header.Set("Authorization", "Bearer ")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}
Request body
{"file":"string","model":"string","prompt":"string","language":"string","temperature":0,"response_format":"string"}