Panoramica API
URL base, autenticazione, formato degli errori e riferimento completo dei codici di errore
URL base
https://openapi.thunderbit.com/openapi/v1Autenticazione
Tutti gli endpoint usano HTTP Bearer (API Key):
Authorization: Bearer YOUR_API_KEYOttieni la tua chiave dalla Dashboard Thunderbit. Le chiavi sono revocabili e per ambiente — non incorporare mai una chiave di produzione nel codice client-side.
Struttura degli errori
Tutte le risposte di errore condividono la stessa envelope. Per impostazione predefinita (formato LEGACY):
{
"success": false,
"error": {
"code": "INVALID_URL",
"status": 400,
"message": "The provided URL is not valid",
"details": null
}
}Note: In precedenza era documentata una busta alternativa
GOOGLE_RPCin cuicodeestatusinvertivano i tipi (string ↔ number). È deprecata e sconsigliata — i client tipizzati (OpenAPI codegen, Pydantic,serde,encoding/json) falliranno la deserializzazione. Usa il formato LEGACY sopra; gli aggiornamenti futuri manterrannocode: stringestatus: numberstabili. Il campodetailspuò contenere contesto strutturato — ad esempio, errori di validazione a livello di campo come coppie{ field: message }restituite conINVALID_PARAMETER.
Codici di errore canonici
| HTTP | Code | Significato |
|---|---|---|
| 400 | INVALID_URL | Formato URL non valido |
| 400 | INVALID_SCHEMA | JSON Schema non valido |
| 400 | INVALID_PARAMETER | Uno o più parametri della richiesta hanno fallito la validazione |
| 400 | SCHEMA_OR_PROMPT_REQUIRED | schema (o prompt) richiesto per l'estrazione |
| 400 | SCHEMA_AND_PROMPT_EXCLUSIVE | schema e prompt non possono essere forniti insieme |
| 400 | BATCH_SIZE_EXCEEDED | La richiesta batch supera il limite di 100 URL |
| 400 | MALFORMED_REQUEST_BODY | Il body della richiesta non è JSON valido |
| 401 | API_KEY_MISSING | Header Authorization mancante |
| 401 | API_KEY_INVALID_FORMAT | Formato API Key non valido |
| 401 | API_KEY_NOT_FOUND | API Key non trovata nel sistema |
| 401 | API_KEY_REVOKED | API Key revocata |
| 401 | API_KEY_DISABLED | API Key disabilitata |
| 401 | API_KEY_EXPIRED | API Key scaduta |
| 401 | INVALID_API_KEY | (deprecato, usa i codici API_KEY_* specifici sopra) |
| 402 | INSUFFICIENT_CREDITS | Credito insufficiente sull'account |
| 404 | JOB_NOT_FOUND | Job batch non trovato |
| 404 | RESOURCE_NOT_FOUND | Risorsa non trovata |
| 408 | REQUEST_TIMEOUT | Timeout della richiesta API |
| 408 | SCRAPE_TIMEOUT | La pagina di destinazione ha impiegato troppo tempo |
| 422 | SCRAPE_SSL_ERROR | Problemi SSL/TLS sul sito di destinazione |
| 422 | SCRAPE_DNS_RESOLUTION_ERROR | Impossibile risolvere l'hostname di destinazione |
| 422 | SCRAPE_SITE_ERROR | Il sito di destinazione ha restituito un errore |
| 422 | SCRAPE_EMPTY_CONTENT | La pagina di destinazione ha restituito contenuto vuoto |
| 422 | SCRAPE_CONTENT_TOO_LARGE | La pagina di destinazione supera i limiti di dimensione |
| 422 | SCRAPE_TARGET_FORBIDDEN | Il sito di destinazione ha negato l'accesso (403) |
| 422 | SCRAPE_TARGET_NOT_FOUND | URL di destinazione ha restituito 404 |
| 422 | SCRAPE_UNSUPPORTED_FILE | Tipo di file di destinazione non supportato |
| 429 | RATE_LIMIT_EXCEEDED | Rate limit dell'account attivato |
| 429 | SCRAPE_TARGET_RATE_LIMITED | Il sito di destinazione ha limitato la nostra richiesta |
| 500 | INTERNAL_ERROR | Errore interno generico |
| 500 | DISTILL_FAILED | La pipeline di distillazione è fallita |
| 500 | EXTRACT_FAILED | La pipeline di estrazione è fallita |
| 500 | PIPELINE_ERROR | Uno step della pipeline ha segnalato un errore |
| 500 | AI_EXTRACTION_FAILED | Lo step di estrazione AI è fallito |
| 500 | MARKDOWN_CONVERSION_FAILED | Conversione HTML-to-Markdown fallita |
| 502 | SCRAPE_ALL_PROVIDERS_FAILED | Tutti i provider di scraping sono falliti |
| 502 | UPSTREAM_BAD_GATEWAY | L'upstream ha restituito una risposta non valida |
| 503 | SCRAPE_PROVIDER_UNAVAILABLE | Provider di scraping non disponibile |
| 503 | AI_SERVICE_UNAVAILABLE | Servizio AI non disponibile |
| 503 | DOWNSTREAM_SERVICE_UNAVAILABLE | Un servizio downstream è temporaneamente non disponibile |
| 504 | UPSTREAM_TIMEOUT | Timeout del gateway upstream |
| 504 | AI_TIMEOUT | Timeout della chiamata al servizio AI |
Riferimento strategia di retry
| Classe di errore | Retry? | Come |
|---|---|---|
4xx (input tuo) | ❌ No | Correggi la richiesta e riprova |
401 (auth) | ❌ No | Ruota / riemetti l'API Key |
402 (crediti) | ❌ No | Ricarica |
408 / 504 (timeout) | ✅ Sì | Backoff esponenziale, max 3 tentativi |
429 (rate-limit) | ✅ Sì | Attendi fino a X-RateLimit-Reset — vedi Rate Limits |
5xx (server) | ✅ Sì | Backoff esponenziale, max 3 tentativi |
SCRAPE_TARGET_* (sito di destinazione) | ⚠️ Forse | Riprova una volta aumentando renderMode |