Errori

Ottieni una chiave API

Ogni errore risponde con uno stato HTTP e la stessa struttura JSON. code è il contratto che legge il tuo codice; message è scritto per una persona e può cambiare.

json
{
  "error": {
    "code": "invalid_request",
    "message": "The request is invalid",
    "details": [
      { "field": "targets[0].text", "code": "required", "message": "targets[0].text is required" }
    ],
    "docUrl": "https://www.sofia-post.com/developers/errors#invalid_request",
    "requestId": "2aab5943-6333-4caf-8478-25a85ebd4abf"
  }
}
  • details dice di più: il campo rifiutato, il motivo di una rete, la finestra di limite esaurita.
  • docUrl porta alla spiegazione del codice in questa pagina.
  • requestId identifica la richiesta: comunicalo all'assistenza.

Codici di errore

StatoCodiceSignificato
400invalid_requestIl body, la query o un parametro non è valido. Un dettaglio per campo rifiutato: field, code (required, is_string, max…) e message.
400invalid_jsonIl body non è un JSON valido.
400invalid_cursorIl cursore non è stato restituito da Sofia API.
400webhook_url_invalidL'indirizzo del webhook non è https, o porta a un indirizzo privato.
400webhook_event_invalidEvento webhook sconosciuto.
400application_name_invalidImpostazioni › API: il nome del client manca o è troppo lungo.
400application_profile_invalidImpostazioni › API: un campo del profilo del client non è valido; il dettaglio lo indica.
400logo_invalidImpostazioni › API: il logo è rifiutato (almeno 180×180 px, PNG, JPEG o WebP, massimo 2 MB).
401invalid_tokenIl token manca, è sconosciuto, scaduto o revocato, oppure la persona dietro di esso ha perso i diritti che porta. Vedi l'header WWW-Authenticate.
401unauthorizedÈ richiesta l'autenticazione.
402subscription_requiredUna scrittura reale (simulazione compresa) richiede un abbonamento attivo o una prova.
403insufficient_scopeAl token manca lo scope dell'endpoint; il dettaglio lo indica.
403insufficient_roleIl tuo ruolo in questo Workspace non consente questa azione.
403live_mode_requiredUna scrittura reale con un token di test.
403route_closed_to_applicationsQuesto endpoint non è aperto alle applicazioni.
403forbiddenL'accesso è rifiutato.
403session_requiredImpostazioni › API: questa azione richiede una sessione Sofia, non un token.
403impersonation_forbiddenImpostazioni › API: questa azione è rifiutata in una sessione presa in prestito.
403workspace_owner_requiredSolo il proprietario del Workspace può farlo.
403workspace_member_requiredNon sei membro di questo Workspace.
404route_not_foundNessun endpoint risponde a questo metodo e a questo percorso.
404establishment_not_foundAttività sconosciuta, o fuori dalla portata del token.
404media_not_foundMedia sconosciuto, o fuori dalla portata del token.
404post_not_foundPubblicazione sconosciuta, o fuori dalla portata del token.
404webhook_not_foundWebhook sconosciuto, o di un'altra applicazione.
404not_foundLa risorsa non esiste.
404application_not_foundImpostazioni › API: client sconosciuto.
404grant_not_foundAutorizzazione sconosciuta o già revocata.
404personal_key_not_foundImpostazioni › API: chiave personale sconosciuta.
405method_not_allowedQuesto metodo non è consentito su questo endpoint.
409post_in_flightUna rete sta inviando la pubblicazione: riprova l'eliminazione un momento dopo.
409post_not_editableUna rete ha già inviato la pubblicazione: non può più essere modificata.
409account_already_connectedQuesta rete è già collegata all'attività.
409webhook_limit_reachedL'applicazione ha già 10 webhook.
409idempotency_in_progressLa prima richiesta con questa Idempotency-Key è ancora in corso.
409conflictLa richiesta è in conflitto con lo stato attuale della risorsa.
409scope_removal_forbiddenImpostazioni › API: un permesso di un client può essere aggiunto ma non rimosso.
409public_client_has_no_secretImpostazioni › API: un client pubblico non ha un secret.
413payload_too_largeIl file supera il limite di caricamento.
415unsupported_media_typeTipo di contenuto non supportato.
422post_refusedUna rete, l'attività o il tuo piano rifiuterebbe la pubblicazione. Un dettaglio per motivo, ognuno con il suo message.
422media_import_refusedNon è stato possibile importare il media da questo URL; il dettaglio dà il motivo.
422media_upload_refusedIl file caricato non è un'immagine o un video supportato.
422platform_not_offeredQuesta rete non è offerta per il collegamento.
422idempotency_key_reusedQuesta Idempotency-Key è stata usata con un body diverso.
422unprocessable_entityLa richiesta è comprensibile ma non può essere elaborata.
429rate_limit_exceededUna finestra di limite è piena: attendi Retry-After.

Motivi di una pubblicazione rifiutata

Un post_refused elenca ogni motivo in details[].code:

CodiceSignificato
unsupported_platformQuesta rete non è supportata.
duplicate_platformLa stessa rete è indicata due volte.
unsupported_formatQuesta rete non offre questo formato.
caption_too_longIl testo è troppo lungo (max, actual).
too_many_hashtagsTroppi hashtag (max, actual).
too_many_mentionsTroppe menzioni (max, actual).
too_many_thread_postsIl thread è troppo lungo (max, actual).
too_many_mediaTroppi media (max, actual).
media_mix_refusedFoto e video non si possono mescolare su questa rete.
media_requiredQuesta rete richiede una foto o un video.
media_type_refusedQuesta rete non accetta questo tipo di media.
scheduled_in_pastscheduledAt è nel passato.
scheduled_at_invalidUna pubblicazione programmata richiede uno scheduledAt futuro.
account_not_connectedNessun account collegato su questa rete per questa attività.
account_ambiguousSu questa rete sono collegati più account: indicane uno con accountId.
media_not_foundIl media non è nella mediateca di questa attività.
media_url_invalidL'URL del media deve essere un indirizzo https pubblico.
platform_unavailableQuesta rete non è ancora aperta su Sofia.
publication_quota_exceededLa quota di pubblicazioni del tuo piano è raggiunta.

Gestire gli errori

  • Ramifica su code, mai su message.
  • Riprova un 429 dopo Retry-After, e un 5xx con un backoff esponenziale.
  • Non riprovare mai un 4xx invariato: correggi prima la richiesta.
  • Registra requestId a ogni errore.