veil

Controlla la quota di una chiave API

Leggi le quote attuali di titolare e chiave senza consumare la quota principale.

GET/v1/rate-limit
Accesso
Serve una chiave API Bearer
Client
Client locale o server

Esempi di richiesta#

cURL
curl -fsS -H "Authorization: Bearer $VEIL_API_KEY" \
  "https://veil.rip/v1/rate-limit"

Risposta#

HTTP 200application/json

owner, metadati key, quota, rate, resource e retryAfter. quota distingue richieste condivise, verifiche, eventuale quota giornaliera ed eventuale limite della chiave. Gli orari usano secondi Unix.

CampoTipoSignificato
ownerintegerNumero permanente della scheda titolare.
keyApiKeyMetadati della chiave autenticata, mai il segreto.
quotaQuotaQuote condivise di richieste e verifiche, più eventuali limiti giornalieri e della chiave. Questa lettura non consuma la quota principale.
rateBucketQuota descritta dalle intestazioni del limite nella risposta.
resourcestringRisorsa descritta da rate.
retryAfterintegerSecondi prima che una richiesta possa essere ammessa; può essere positivo anche se questa lettura restituisce 200.

Esempio di risposta

Valori illustrativi. Leggi la risposta corrente della tua richiesta.

json
{
  "owner": 1,
  "key": {
    "id": "0123456789abcdef0123456789abcdef",
    "owner": 1,
    "label": "Website backend",
    "prefix": "veil_live_01234567…",
    "scopes": [
      "read",
      "verify"
    ],
    "state": "active",
    "createdAt": "2026-10-27T00:00:00Z",
    "expiresAt": "2027-01-25T00:00:00Z",
    "revokedAt": null,
    "suspended": false,
    "requestsPerMinute": null,
    "lastUsedAt": null,
    "requests": 0
  },
  "quota": {
    "requests": {
      "limit": 600,
      "remaining": 600,
      "resetAt": 1793059200
    },
    "verification": {
      "limit": 120,
      "remaining": 120,
      "resetAt": 1793059200
    },
    "daily": null,
    "key": null
  },
  "rate": {
    "limit": 600,
    "remaining": 600,
    "resetAt": 1793059200
  },
  "resource": "requests",
  "retryAfter": 0
}

Apri un oggetto annidato per leggerne i campi. I tipi con null ammettono un valore null; i campi optional possono essere assenti. Gli altri campi sono presenti nell’oggetto.

Metadati della chiave API ApiKey
CampoTipoSignificato
idstringID pubblico di gestione della chiave, non il segreto Bearer.
ownerintegerNumero permanente della scheda titolare.
labelstringEtichetta dell’integrazione scelta dal titolare.
prefixstringPrefisso visualizzato non segreto.
scopesarray<string>read e/o verify.
statestringactive, expired, suspended o revoked. La sospensione dell’account è indicata separatamente.
createdAtstringData e ora di creazione in ISO 8601 UTC.
expiresAtstringScadenza in ISO 8601 UTC.
revokedAtstring | nullData e ora della revoca permanente.
suspendedbooleanIndica se questa chiave è sospesa.
requestsPerMinuteinteger | nullLimite aggiuntivo della chiave, oppure null.
lastUsedAtstring | nullUltimo uso ammesso, oppure null se mai usata.
requestsintegerRichieste ammesse durante la vita della chiave.
Quote condivise e aggiuntive Quota
CampoTipoSignificato
requestsBucketQuota di richieste condivisa dal titolare.
verificationBucketQuota di verifica condivisa aggiuntiva. Una verifica consuma entrambe le quote.
dailyBucket | nullLimite giornaliero aggiuntivo, se impostato.
keyBucket | nullLimite aggiuntivo della singola chiave, se impostato.
Quota Bucket
CampoTipoSignificato
limitintegerCapacità della quota, oppure limite del giorno UTC per la quota giornaliera.
remainingintegerRichieste intere disponibili al momento.
resetAtintegerSecondi Unix in cui la quota sarà piena, oppure la prossima mezzanotte UTC per il limite giornaliero.

Intestazioni della risposta#

IntestazioneValoreSignificato
Content-Typeapplication/jsonUsa il tipo dichiarato per scegliere come leggere il corpo.
DateHTTP dateOra del server. Confrontala con il tuo orologio per firmare le richieste.
Cache-Controlno-storeNon conservare le risposte private o temporanee in una cache condivisa.
Retry-Afterinteger seconds, on rate_limited or busyAttendi almeno questo intervallo prima di riprovare. Altri codici 429/503 non lo includono necessariamente.
X-RateLimit-LimitintegerCapacità della quota indicata.
X-RateLimit-RemainingintegerRichieste intere rimaste nella quota.
X-RateLimit-ResetUnix secondsIstante in cui la quota sarà piena, non il confine di una finestra fissa al minuto.
X-RateLimit-Resourcerequests | verification | key | dailyQuota rappresentata dalle intestazioni. Gli altri saldi sono in quota.

Note d’uso#

  • La risposta è privata e usa Cache-Control no-store.
  • Anche le richieste pubbliche autenticate con Bearer restituiscono X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset e X-RateLimit-Resource. Sono intestazioni per client locali o server; il CORS pubblico espone Date, ETag e Retry-After.

Errori#

Gli errori API restituiscono un oggetto error. Usa error.code nella logica del programma; error.message è un testo inglese per le persone e può cambiare. Guida a risposte ed errori

HTTPCodiceSignificato e cosa fare
401invalid_api_key

La credenziale Bearer è malformata, sconosciuta, scaduta o revocata.

Usa una chiave attiva. Per l’accesso pubblico anonimo, rimuovi del tutto Authorization. Credenziali non valide non attivano automaticamente l’accesso anonimo.

403api_key_scope

La chiave API non ha il permesso read o verify, oppure l’endpoint non accetta chiavi Bearer.

Usa il permesso corretto. Le modifiche alle schede e la gestione delle chiavi richiedono una firma del dispositivo.

403api_key_suspended

Questa chiave API è sospesa.

Chiedi allo staff di ripristinarla; un’altra chiave non rimuove la sospensione dell’account.

403developer_suspended

L’account API del titolare è sospeso oppure la scheda titolare non è disponibile.

Controlla l’account titolare e le restrizioni dello staff. Creare un’altra chiave non aggira la sospensione.

Errori comuni delle richieste
HTTPCodiceSignificato e cosa fare
429rate_limited

È stato superato un limite anonimo, delle richieste firmate o della chiave API.

Attendi almeno i secondi indicati da Retry-After. Condividi coda e budget dei tentativi tra i tuoi processi.

500internal_error

Si è verificato un errore imprevisto del server. I dettagli interni non vengono restituiti.

Riprova le letture con attese crescenti e un limite. Controlla l’esito delle scritture prima di inviare una nuova operazione firmata.

503busy

L’applicazione ha raggiunto un limite temporaneo di concorrenza o del database.

Attendi i secondi indicati da Retry-After e riprova con attese crescenti e un limite.