aisplice

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.

error.json
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.

backoff.py
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()

Come funzionano le chiavi di idempotenza →

#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.

L'URL del server viene riscritto su questo dominio, quindi i client generati non richiedono configurazione aggiuntiva.
generate-a-client.sh
# 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/completionsChat multi-turno, chiamata di strumenti, streaming, modalità JSON.
POST/v1/responsesTesto in un'unica chiamata con output strutturati e ragionamento.
POST/v1/messagesFormato nativo Anthropic — stessa autenticazione, nessun adattatore necessario.
POST/v1/responses/compactCondensa una conversazione lunga sui modelli che supportano la compattazione — non esiste una versione in streaming.
Vettori
POST/v1/moderationsModerazione dei contenuti con lo stesso formato di trasmissione.
Musica
POST/v1/music/generationsGenerazione musicale asincrona — restituisce un task_id; webhook opzionale supportato.
GET/v1/music/tasks/:task_idInterroga stato e avanzamento dei task musicali asincroni.
GET/v1/music/tasks/:task_id/contentRecupera l'audio finito tramite il gateway.
Immagine
POST/v1/images/tasksGenerazione di immagini asincrona, la route usata dai modelli di immagini — restituisce un task_id; webhook opzionale supportato.
GET/v1/images/tasks/:task_idInterroga stato e avanzamento dei task immagine asincroni.
GET/v1/images/tasks/:task_id/contentRecupera gli URL finali delle immagini — link persistenti, sicuri da salvare.
Video
POST/v1/videosGenerazione video in formato OpenAI (Sora, Doubao) — webhook opzionale supportato.
GET/v1/videos/:task_idInterroga lo stato del task asincrono; il contenuto si trova in /content.
GET/v1/videos/:task_id/contentScarica il video finito tramite il gateway.
DELETE/v1/videos/:task_idAnnulla un task che non ha ancora raggiunto uno stato finale.
POST/v1/videos/:video_id/remixRigenera un video esistente con un nuovo prompt, sui modelli che lo supportano.
3D
POST/v1/model3d/tasksGenerazione e post-elaborazione asincrona di asset 3D — restituisce un task_id.
GET/v1/model3d/tasks/:task_idInterroga il task 3D; l'URL del risultato arriva nel corpo del task, non esiste una route /content.
Media
POST/v1/media/upload-policyCrea 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/verifyVerifica 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/verifyVerifica 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/balanceSaldo dell'account e quanto questa chiave può ancora spendere — gratis, nessuna chiamata a modelli.
Metadati
GET/v1/modelsElenca tutti i modelli che questa chiave può usare.
GET/v1/models/:modelRecupera 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.