Skip to main content

API Error Format

All non-validation errors return a consistent envelope. The machine-readable field is type (stable PascalCase), not a SCREAMING_SNAKE code:
Request-validation errors (422) use FastAPI’s shape instead:

Common Errors

TypeStatusCauseFix
ValidationError422Missing or invalid fieldsCheck required fields in the API reference
AuthenticationError401Invalid, missing, or revoked API keyVerify the Authorization: Bearer <key> header
UnauthorizedError / ForbiddenError403Missing/wrong X-Namespace, or insufficient permissionsCheck the X-Namespace header matches the resource you’re calling
QuotaExceededError403Plan usage/quota exceededSee Rate limits & quotas
NotFoundError404Resource doesn’t existVerify the ID and namespace
TooManyRequestsError429Too many requestsBack off and retry with exponential delay (respect Retry-After)
ProcessingError500Processing error in engineCheck task details for the specific failure reason
401 vs 403 — they mean different things. A 401 AuthenticationError means the API key itself is bad (missing, malformed, or revoked). A 403 means the key is valid but the request isn’t allowed: either the X-Namespace header is missing/doesn’t match the resource (UnauthorizedError/ForbiddenError), or you’ve exceeded a plan quota (QuotaExceededError). Match the type field in the response body — not just the status code — to the fix.

Rate Limits

TierRequests/minConcurrent tasks
Free605
Pro60050
EnterpriseCustomCustom
When you hit a 429, the response includes Retry-After header with seconds to wait.

Debugging Checklist

Objects not processing

  1. Check batch status: GET /v1/buckets/{bucket_id}/batches/{batch_id}
  2. Check task status: GET /v1/tasks/{task_id}
  3. Verify the collection’s feature_extractor matches the bucket schema’s blob types
  4. Check for failed documents: GET /v1/buckets/{bucket_id}/batches/{batch_id}/failed-documents

Retriever returning zero results

Zero results almost always trace to one of these — check in order:
Likely causeHow to confirmFix
Documents aren’t indexed yetGET /v1/tasks/{task_id} — did the batch reach COMPLETED? POST /v1/collections/{id}/documents/list — are there any docs?Wait for the batch to reach COMPLETED / COMPLETED_WITH_ERRORS before querying
Wrong feature_uri (most common)A mismatched URI matches nothing and returns 0 silently — feature_search attaches a note to the response warnings array instead of erroringGET /v1/collections/{id} → copy vector_indexes[].feature_uri exactly; see Find your feature_uri
Filter or threshold too strictTemporarily remove attribute_filter stages and any score_threshold / min_score, then re-runLoosen the filter or lower the threshold, then re-tighten
Wrong collection_identifiersThe retriever points at a collection that has no matching documentsSet collection_identifiers to the collection you actually ingested into
Empty query inputAn empty inputs value yields an empty query embedding → empty resultsPass a non-empty query in inputs
Then use the explain endpoint to see the execution plan and per-stage candidate counts.

Poor retrieval quality

  1. Check if the right extractor is being used for your query type (text query → text embedding, image query → visual embedding)
  2. Add a reranking stage to improve precision
  3. Review the execution trace for score distributions
  4. Consider adding more retriever stages (filters, MMR for diversity)

Slow processing

  1. Video processing time scales with duration — 1 min video ≈ 1-2 min processing
  2. Use batch processing for bulk imports instead of single-object ingestion
  3. Check for resource contention: GET /v1/tasks?status=PROCESSING

FAQ

Can I use multiple feature extractors on the same data? Yes — create multiple collections pointing to the same bucket, each with a different extractor. How do I re-process documents after changing a collection’s extractor? Create a new batch with the same objects and submit it. New documents replace old ones. What file formats are supported? Video (MP4, MOV, AVI, WebM), Images (JPG, PNG, WebP, GIF), Audio (MP3, WAV, M4A, FLAC), Documents (PDF, DOCX, TXT, HTML). How do I delete all data in a namespace? Delete the namespace: DELETE /v1/namespaces/{namespace_id}. This removes all buckets, collections, retrievers, and documents. Is there a size limit for uploads? Default: 500MB per file. Enterprise plans support larger files. Use URL references for files already in cloud storage. Contact support →