Skip to main content
These rules apply to every Need Alert API endpoint.

Authentication

Every request carries an API key in the Authorization: Bearer <token> header and asks for JSON with Accept: application/json. How to create the key, what each 401/403/404 means and how to rotate the token: Authentication.

Versioning

Every endpoint lives under /api/v1. A change that would break existing clients ships as a new version (/api/v2) and never silently changes v1. New fields may appear in v1 responses at any time, so your code should ignore fields it doesn’t know.

Response format

Successful responses wrap the content in data, both for a single resource and for a list.
Dates and times are always in UTC, in ISO 8601 format (2026-10-01T19:00:00+00:00). Convert to local time only for display. Money values are integers in the currency’s smallest unit, such as cents: 1990 with currency BRL is R$ 19.90.

Errors

Every error has the same shape:

General codes

Dispatch codes

Item and idempotency codes

A resource from another chain, or from a unit outside your key, returns 404, not 403. The API doesn’t reveal whether a resource that isn’t yours exists.

Pagination

Lists accept page and per_page. The default is 20 items per page and the maximum is 100.
The response includes data, links (first, last, prev, next), and meta (current_page, per_page, total, last_page).

Language

With an API key, send Accept-Language: pt-BR or Accept-Language: en to choose the language of error messages and translated content, such as item names and descriptions; without the header, the key gets the chain’s default language. The dashboard session uses the language saved in the person’s account, chosen at sign-up and changeable in the settings, even if the header says otherwise. The response reports the language used in the Content-Language header.

Tracing

Every response includes an X-Request-Id header. You can also send your own. Share this value with support when asking about a specific request.

Rate limits

Past the limit, the response is 429 with a Retry-After header saying how many seconds to wait. The X-RateLimit-Limit and X-RateLimit-Remaining headers show the limit and what’s left. An idempotent replay counts towards the limit.