Skip to main content
Every error is a JSON object with an error field:

Error types

Authentication

invalid_api_key

HTTP 401. No usable key was sent, or the key does not match any key on record. Send it as Authorization: Bearer gpk_.... A key is shown once at creation and cannot be recovered. If you lose it, create a new one.

api_key_revoked

HTTP 401. This key has been revoked. Create a new one in Settings → API keys.

api_key_expired

HTTP 401. This key is no longer valid. Create a new key in Settings → API keys.

Permission

api_keys_disabled

HTTP 403. The partner API is temporarily unavailable. Your keys still exist and work again when it returns. Calls made meanwhile are not processed.

insufficient_scope

HTTP 403. Your key does not carry the scope this endpoint needs. required_scope names it. An existing key cannot gain a scope, so create a new key with it. See the scopes table.

account_suspended

HTTP 403. The account this key belongs to is suspended. The code field reads banned.

company_required

HTTP 403. The key’s owner is not a member of any company. Requests, opportunities and introductions all belong to a company. Join or create one in the dashboard, then retry.

forbidden_role

HTTP 403. The key owner’s role does not allow this action. A viewer can read. Stating demand, declining an opportunity or confirming readiness needs a trader, an authorized signatory or an owner.

Request shape

invalid_request

HTTP 400. One or more parameters are invalid. param names the field, when the failure comes from parsing your request.

invalid_cursor

HTTP 400. The cursor does not match this list. A cursor is valid only for the exact list and filters that produced it. Restart pagination without a cursor. See Pagination.

not_found

HTTP 404. No such resource, or it is not visible to you.

Requests (the buyer’s demand)

request_not_found

HTTP 404. No such request, or it belongs to another company. The two cases look identical on purpose.

request_not_editable

HTTP 409. This request can no longer be edited, because it was offered to a seller (matched) or closed (closed). current carries its actual status. State new demand as a new request instead of retrying the edit. See Statuses.

request_invalid

HTTP 400. The specification does not describe demand anyone could match. problems lists every field at fault at once, so fix them together rather than one per retry.

Opportunities (the seller’s inbox, before reveal)

opportunity_not_found

HTTP 404. No such opportunity, or it was not offered to your company. The two cases look identical on purpose.

opportunity_not_pending

HTTP 409. This opportunity is no longer waiting for an answer. It was already accepted, declined, expired or withdrawn. current carries its actual status. This call changed nothing.

Introductions (after reveal)

introduction_not_found

HTTP 404. No such introduction, or your company is not a party to it. The two cases look identical on purpose.

introduction_not_active

HTTP 409. This introduction is no longer active, for example because it was released (released). Nothing new can be recorded on it. current carries its actual status. See Statuses.

Idempotency

idempotency_key_required

HTTP 400. Every write to requests, opportunities and introductions needs an Idempotency-Key. See Idempotency.

idempotency_key_in_flight

HTTP 409. A request with this Idempotency-Key is still being processed. retry_after_seconds and the Retry-After header say how long to wait; retrying then returns the original response.

idempotency_key_reused

HTTP 409. This Idempotency-Key was already used with a different request body. Use a new key for a new intent; reuse a key only to retry the exact request it belongs to.

Rate limits

rate_limited

HTTP 429. Too many requests. retry_after_seconds and the Retry-After header say how long to wait. See Rate limits.

daily_quota_exceeded

HTTP 429. The daily request quota for this key is spent. It resets at 00:00 UTC.

Server

api_error

HTTP 500. Something went wrong on our side. If it persists, contact support at help@gpuoutlet.ai and quote request_id.

Idempotency

Safe retries that avoid idempotency_key_reused.

Rate limits

Avoiding rate_limited and daily_quota_exceeded.