Skip to content
BasiX Media

Errors & rate limits

Every error code and what causes it.

Native endpoints answer errors with this shape:

json
{ "error": { "code": "QUOTA_EXCEEDED", "message": "Storage quota exceeded." } }

INVALID_PATH also carries reason (for example extMismatch, invalidSegment, tooDeep) and params.

StatusCodeWhen
401UNAUTHORIZEDKey missing, malformed, revoked or expired.
403FORBIDDENThe key scope does not allow this action, for example an upload key deleting a file.
403ACCOUNT_BANNEDThe account is suspended.
403READ_ONLYThe account is read-only, usually over quota after a downgrade. Uploads are refused.
403PAYMENT_REQUIREDNo active plan and no free storage to fall back on.
403PAST_DUEThe last payment failed. Uploads are suspended until it is settled.
403CAPACITY_UNAVAILABLEFree storage is temporarily full. Try later or pick a plan.
503BILLING_CLOSEDPaid plans cannot be bought right now.
403PLAN_REQUIREDA full key on the free tier, or a plan limit reached (alert rules).
413FILE_TOO_LARGEFile above 2048 MB, or a base64 body above 48 MB.
413QUOTA_EXCEEDEDStorage quota full. Files, logs, databases and sites count together.
415UNSUPPORTED_TYPEType not accepted, detected from the bytes. Also sent when a typed endpoint gets another media type.
400NO_FILEMultipart body without a file part.
400BAD_REQUESTMalformed body or parameter. The message says which.
400INVALID_PATHPath malformed, or its extension does not match the real file type.
409PATH_CONFLICTTwo writes raced for one path, a restore hit a live file, or an import is already running.
404NOT_FOUNDNo such file, folder, rule or route on this host.
429RATE_LIMITEDToo many requests. Wait for Retry-After.
500INTERNALServer error. Retry with backoff.

Rate limits (per key):

WhatFreePaid plan
Uploads (all upload endpoints together)30 per minute, 2 GB per hour600 per minute, 60 GB per hour
GET /api/v1/files600 per minute600 per minute
POST /api/v1/logs240 per minute240 per minute
Base64 uploads48 MB body48 MB body

A 429 carries Retry-After (seconds) and, for uploads, X-RateLimit-Limit and X-RateLimit-Remaining. GET /api/v1/files sends X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset on every response. On 429, wait and retry. Do not retry other 4xx errors.

Try it on your own server

Create a free account and your API key is ready in about two minutes. 3 GB included, bandwidth never billed, no card needed.

Create a free account
Errors & rate limits — Standalone docs — BasiX