Base URL and versioning
/api; treat undocumented behavior as unstable and re-check the pages you depend on when you upgrade.
Required headers
For JSON requests:
Content-Type: application/json on a multipart upload. Let your HTTP client generate the boundary.
Browser requests are not supported
The API’s CORS policy does not allow theX-Public-Key and X-Secret-Key headers. A browser fetch with those headers triggers a preflight OPTIONS request that the API does not approve, so the actual request never runs.
This is intentional: embedding a company secret in a browser would expose it to every user of your application.
If a browser needs file data, implement a backend endpoint that:
- Authenticates your user.
- Authorizes the specific file.
- Calls Everabyte server-side.
- Streams the result back without exposing credentials.
Timeouts
Uploads and downloads can take much longer than a typical JSON call. Set timeouts by operation:
A total request timeout on a multi-gigabyte upload is a common cause of truncated transfers. Prefer per-socket inactivity timeouts over a hard total deadline.
Retries
There is no documented idempotency-key mechanism. Retrying a non-idempotent write can duplicate work:- Uploading twice can create a second version or a duplicate file.
- Copying twice creates two copies.
- Restoring twice may return a no-op or an error.
For uploads, verify by listing files or checking the expected
fileId before re-sending a large payload.
Backoff
Use exponential backoff with jitter. A practical policy:429 and transient 5xx. Do not retry 400, 401, 402, 403, or 410.
Compression and binary bodies
Do not assume the API compresses JSON responses. Do not compress upload bodies unless you control both ends; the API expects the file bytes as multipart parts. Download responses are binary. If your HTTP client auto-decompresses based onContent-Encoding, ensure it also preserves byte counts correctly for your integrity checks.
Proxy and TLS inspection
If you run an outbound proxy or TLS inspection appliance, verify that it:- preserves both API key headers,
- does not buffer large upload or download bodies in memory,
- does not rewrite
Content-LengthorContent-Range, - allows long-lived streaming responses.
Response parsing
Check the status code before parsing. Some errors have anerror field, others have code. A successful response has data.