Rate limiting

To keep the platform responsive for everyone, the number of calls you can make to the Showcase API is limited.

Limits

Calls are counted per company, over a fixed clock minute: the counters are reset at the beginning of each minute, they are not a sliding window. All the API keys of your account share the same quotas.

Each call is either a standard call or an intensive call, and each type has its own quota :

Type of call Default limit
standard All the calls that are not intensive 250 requests per minute
intensive The resource-heavy calls listed below 10 requests per minute

The two quotas are independent: exhausting your intensive quota does not prevent you from making standard calls, and the other way round.

These are the default limits of the platform: the limits that actually apply to your account are displayed on the API consumption page, under Settings, then API. If they are too low for your use case, get in touch with us.

Intensive calls

These endpoints need significantly more resources on our side, so they are counted against the intensive quota. They are also flagged as intensive in the reference documentation of each endpoint.

Endpoint Description
GET /api/v1/cv/{id}/export/{format} Export a CV in a given format
GET /api/v1/users/search Search for a user
PUT /api/v1/users/{id} Update a user
DELETE /api/v1/users/{id} Delete a user
GET /api/v1/tags/{id}/users Get all users linked to a tag
If you need to process a large number of users or CVs with these endpoints, spread your calls over time rather than sending them in bursts.

Rate limit headers

Responses carry the state of the quota of the call :

Header Description
X-RateLimit-Limit The number of calls allowed for the current minute.
X-RateLimit-Remaining The number of calls you can still make during the current minute.
X-RateLimit-Reset The Unix timestamp (in seconds) at which the counter is reset, i.e. the beginning of the next minute.

These headers describe the quota of the type of the call: the response to an intensive call gives the state of your intensive quota, the response to a standard call the state of your standard quota.

When the limit is reached

Once a quota is exhausted, the API answers with a 429 carrying the same headers (with X-RateLimit-Remaining: 0), plus a Retry-After header giving the number of seconds to wait before the counter is reset, and this body :

{"error": {"code": 429, "message": "API rate limit exceeded: maximum 250 standard request(s) per minute reached for your company. Retry after 14:32:00 Europe/Paris."}}

A rejected call is not counted against your quota, but please do wait for Retry-After seconds rather than retrying immediately.