The companyId in the URL is not registered against your application.
Contact E1 support to add the registration.
Unauthorised (plain body)
The permission on your registration is not published.
Contact E1 support — this is a provisioning issue on our side.
Unauthorised (plain body)
The token’s scopes, intersected with your permission’s scopes, don’t include the scope the route requires.
Request your token with the required scope, or ask support to add it to your permission. For the Supplier API you need speci-finder/read.
403 — Forbidden
code / detail
Likely cause
What to do
403 / Access denied
The supplier company you are calling for does not hold the required E1 licence for this endpoint (the Supplier API requires the Supplier Professional Plus licence or an equivalent regional variant).
Confirm with the customer that their E1 licence covers Speci-finder access. Contact E1 support if you believe the licence is in place but the call is still rejected.
429 — Too Many Requests
code
Meaning
What to do
(WAF response, no JSON body guaranteed)
Your (bearer token, x-e1-client-id) bucket has exceeded 100 requests in a 5-minute window.
Back off and retry after the window rolls over. See Rate limits for the exact limit and Retry guidance below.
5xx — Server errors
code
Meaning
What to do
FETCH_FAILED
The External API could not fetch data from the underlying E1 platform.
Retry with exponential backoff. If persistent, contact support.
INTERNAL_SERVER_ERROR
Something unexpected broke on our side.
Retry with exponential backoff. If persistent, contact support.
Retry guidance
Retry 5xx responses with exponential backoff (e.g. 1s, 2s, 4s, 8s, up to ~60s). Do not retry aggressively.
Retry 429 responses only after backing off. The API does not emit a Retry-After header — back off exponentially or wait until the 5-minute window has rolled over. See Rate limits — If you hit a throttle.
Do not retry other 4xx responses (400, 403) — the request or the underlying licence needs to change before it will succeed.
On 401 after a previously-succeeding call pattern, discard any cached token and fetch a new one before retrying once. If the retry fails, stop and investigate.
200 OK with empty data
A 200 with { "data": [] } is not an error. It means the call succeeded but nothing matched. Common causes:
The assigned user has no Speci-finder keywords configured.
No currently-open tenders match the assigned user’s keywords.
All previously-matching tenders have already closed.
There is nothing to retry here — the response is authoritative.