Fehler

Jede Non-2xx-Response von /api/v1 verwendet dasselbe JSON-Format:

json
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded"
  }
}

Behandle error.code als stabilen maschinenlesbaren Wert. error.message enthält menschenlesbaren Kontext und gegebenenfalls Details zur Validierung.

Error-Referenz

StatusCodeBedeutungRetry?
400invalid_requestBody, Parameter, Cursor oder erforderliche Header sind ungültig.Request korrigieren.
401unauthorizedDer API-Key fehlt, ist ungültig, abgelaufen oder widerrufen.Gültigen API-Key verwenden.
403forbiddenDem API-Key fehlt ein Scope oder der Teamrolle eine Berechtigung.Zugriff ändern.
403plan_requiredDas Team hat derzeit keinen Public-API-Zugang.Pro-Zugang aktivieren.
404not_foundDie Datei existiert nicht oder gehört zu einem anderen Team.Nein.
413payload_too_largeDer Direct Upload überschreitet 100 MiB.Über die App hochladen.
415unsupported_media_typeDer normalisierte Content-Type wird nicht akzeptiert.Datei oder Typ ändern.
429rate_limitedDas Request-Budget des API-Keys ist aufgebraucht.Retry-After abwarten.
507quota_exceededDas Speicherkontingent des Teams ist voll.Speicher freigeben oder Kontingent erhöhen.
500internal_errorEin unerwarteter Serverfehler ist aufgetreten.Mit Backoff wiederholen.

JavaScript-Hilfsfunktion

js
async function apiFetch(path, options = {}) {
  const response = await fetch(`${process.env.NEW_ARCHIVE_URL}${path}`, {
    ...options,
    headers: {
      Authorization: `Bearer ${process.env.NEW_ARCHIVE_API_KEY}`,
      ...options.headers,
    },
  })

  const body = await response.json()
  if (!response.ok) {
    const error = new Error(body.error?.message ?? `HTTP ${response.status}`)
    error.code = body.error?.code
    error.status = response.status
    error.retryAfter = Number(response.headers.get("retry-after") ?? 0)
    throw error
  }
  return body
}

Rate Limits behandeln

Beachte Retry-After, wenn der Header vorhanden ist. Verwende einen Fallback-Wert und begrenze die Retries, damit eine fehlerhafte Integration nicht endlos Requests sendet.

Validation Errors

Validation Errors benennen das Feld in message. Sie dürfen geloggt werden, der Header Authorization jedoch nicht.

json
{
  "error": {
    "code": "invalid_request",
    "message": "limit: Too big: expected number to be <=100"
  }
}