Riferimento API
Nozioni di integrazione
#URL di base
Tutti gli endpoint si trovano sotto /v1 sul dominio di questa installazione. Non c'è selezione della regione — il routing verso i fornitori upstream avviene dietro il gateway.
#Header di autenticazione
Un solo header Authorization: Bearer è tutta l'autenticazione. Nessuna firma, nessun timestamp e nessun header per utente — tutto ciò che altri gateway richiedono oltre al bearer token qui non esiste.
#Struttura dell'errore
I rifiuti lato gateway usano la struttura in formato OpenAI con type "xiaoxiang_error". Gli errori upstream vengono inoltrati invariati, gli endpoint dei task asincroni rispondono con un corpo piatto e due casi non hanno alcun corpo — leggi la pagina degli errori prima di scrivere il tuo parser.
HTTP/1.1 402 Payment Required
X-Oneapi-Request-Id: 2026091023...
{
"error": {
"message": "insufficient account balance, please top up to continue (request id: 2026091023...)",
"type": "xiaoxiang_error",
"code": "insufficient_user_quota"
}
}Tutte e cinque le strutture e la tabella dei codici di errore →
#Politica di retry
Riprova i 429 e i 5xx con backoff esponenziale, rispettando Retry-After quando presente. Non riprovare gli errori di validazione 4xx — lo stesso corpo fallirà di nuovo. Per gli invii fatturabili, invia una Idempotency-Key, così un nuovo tentativo dopo un timeout riproduce il primo risultato invece di avviare un secondo job.
import time, requests
def call_with_backoff(url, headers, body, tries=5):
for i in range(tries):
r = requests.post(url, headers=headers, json=body)
if r.status_code not in (429, 500, 502, 503, 504):
return r
# 429 and 413 have no JSON body — never parse before checking status.
wait = int(r.headers.get("Retry-After", 2 ** i))
time.sleep(wait)
r.raise_for_status()#Specifica leggibile dalle macchine
Lo stesso contratto in due formati generati: OpenAPI per la generazione di client, Postman e strumenti API, e un unico file markdown da incollare in un agente di coding. Entrambi sono ricostruiti da queste pagine, quindi non possono discostarsi da ciò che stai leggendo.
openapi.json
OpenAPI 3.1 — ogni percorso documentato, con i suoi parametri e le sue risposte di errore.
llms-full.txt
L'intero contratto di trasmissione in un unico file markdown, dimensionato per la finestra di contesto di un agente.
llms.txt
Indice sintetico di tutte le pagine della documentazione, per i client AI che lo scaricano per primo.
# Any OpenAPI generator works; this is the common one.
npx @openapitools/openapi-generator-cli generate \
-i https://www.aisplice.store/openapi.json \
-g python \
-o ./gateway-client#Panoramica degli endpoint
Ogni percorso accetta il corpo di richiesta OpenAI — i parametri specifici del fornitore (anthropic tool_use, gemini thinking_config) vengono inoltrati invariati. Le route native dei fornitori e quelle legacy congelate sono elencate a parte nella pagina sulla compatibilità.
| Testo | ||
| POST | /v1/chat/completions | Chat multi-turno, chiamata di strumenti, streaming, modalità JSON. |
| POST | /v1/responses | Testo in un'unica chiamata con output strutturati e ragionamento. |
| POST | /v1/messages | Formato nativo Anthropic — stessa autenticazione, nessun adattatore necessario. |
| POST | /v1/responses/compact | Condensa una conversazione lunga sui modelli che supportano la compattazione — non esiste una versione in streaming. |
| Vettori | ||
| POST | /v1/moderations | Moderazione dei contenuti con lo stesso formato di trasmissione. |
| Musica | ||
| POST | /v1/music/generations | Generazione musicale asincrona — restituisce un task_id; webhook opzionale supportato. |
| GET | /v1/music/tasks/:task_id | Interroga stato e avanzamento dei task musicali asincroni. |
| GET | /v1/music/tasks/:task_id/content | Recupera l'audio finito tramite il gateway. |
| Immagine | ||
| POST | /v1/images/tasks | Generazione di immagini asincrona, la route usata dai modelli di immagini — restituisce un task_id; webhook opzionale supportato. |
| GET | /v1/images/tasks/:task_id | Interroga stato e avanzamento dei task immagine asincroni. |
| GET | /v1/images/tasks/:task_id/content | Recupera gli URL finali delle immagini — link persistenti, sicuri da salvare. |
| Video | ||
| POST | /v1/videos | Generazione video in formato OpenAI (Sora, Doubao) — webhook opzionale supportato. |
| GET | /v1/videos/:task_id | Interroga lo stato del task asincrono; il contenuto si trova in /content. |
| GET | /v1/videos/:task_id/content | Scarica il video finito tramite il gateway. |
| DELETE | /v1/videos/:task_id | Annulla un task che non ha ancora raggiunto uno stato finale. |
| POST | /v1/videos/:video_id/remix | Rigenera un video esistente con un nuovo prompt, sui modelli che lo supportano. |
| 3D | ||
| POST | /v1/model3d/tasks | Generazione e post-elaborazione asincrona di asset 3D — restituisce un task_id. |
| GET | /v1/model3d/tasks/:task_id | Interroga il task 3D; l'URL del risultato arriva nel corpo del task, non esiste una route /content. |
| Media | ||
| POST | /v1/media/upload-policy | Crea una policy di upload temporanea per un'immagine, un video, un audio o un file generico, entro il limite configurato. |
| Abbonamenti app | ||
| POST | /v1/google-play/verify | Verifica un token di acquisto Google Play per la tua app con l'account di servizio impostato su questa chiave — gratis, nessuna chiamata a modelli. |
| POST | /v1/xsolla/verify | Verifica se un utente Xsolla ha un abbonamento attivo con la chiave API Xsolla impostata su questa chiave — gratis, nessuna chiamata a modelli. |
| Account | ||
| GET | /v1/balance | Saldo dell'account e quanto questa chiave può ancora spendere — gratis, nessuna chiamata a modelli. |
| Metadati | ||
| GET | /v1/models | Elenca tutti i modelli che questa chiave può usare. |
| GET | /v1/models/:model | Recupera la voce di un singolo modello — la forma che i client Anthropic e OpenAI interrogano all'avvio. |
Non hai ancora risolto?
Inviaci l'ID richiesta o il messaggio di errore e verificheremo.