Errors: keys, credits and limits

The errors any address can return (keys, credits, rate limits, request shape, safe retries) and the errors for webhooks, embeds, shops and listing fields, with the most common mistakes first.

Most API error bodies have a docs link to their section. KEY_CREATOR_IS_A_MEMBER has no docs link; find it under Account and dashboard errors. This page holds the errors every address shares and those of the addresses no tool owns. Each tool's own errors are on its errors page: PixelTrace errors, Safeguard errors, Orbit errors and Ask PCIFIC errors. What an error body holds is explained in Errors, limits and retries.

Common mistakes

The ways integrations most often go wrong, written as what you see. Each one links to the errors it causes.

My log export is too large

LOG_EXPORT_TOO_LARGE names the from/to range when it exceeds 31 days or 10,000 requests. Choose a shorter range and export each part separately. Nothing is truncated or unlocked.

Publishing makes no new version

NOTHING_TO_PUBLISH means the working copy has no listing fields or has not changed since its latest publish. Add or change a field in a category, then publish again. A refused publish saves no version.

Monitoring refuses my dates

INVALID_MONITORING_RANGE names from or to when it is not a real date, or from is after to. Use YYYY-MM-DD (for example 2026-10-26) or an ISO 8601 time with a timezone, with from on or before to.

Every request says my key is missing or not recognised

Send the key in the Authorization header as Bearer, a space, then the key, with nothing else: Authorization: Bearer pcific_test_... A key in another header (X-API-Key) or in the address is not read, so the answer is 401 MISSING_API_KEY. The key without "Bearer ", in quote marks or with a line break copied after it is 401 UNAUTHORIZED.

It works with my test key but not live

A live key works only once PCIFIC has approved your business for live use (403 LIVE_KEYS_OFF until then). A live key spends credits, so an empty balance is 402 OUT_OF_CREDITS and a spending limit you set is 429 SPEND_LIMIT_REACHED. A live key may read settings and listing fields but never change them: 403 KEY_NOT_ALLOWED. Change them on the dashboard or with a test key.

I get charged twice when I retry

A POST sent again without an Idempotency-Key is new work, charged again. Make one key per piece of work, save it with the request, and send the same key and exactly the same body when you retry. Changing the body under the same key is 422 IDEMPOTENCY_KEY_REUSED. Retrying while the first is still running is 409 IDEMPOTENCY_KEY_IN_USE: wait Retry-After.

My requests suddenly get 429

429 always carries a Retry-After header with the seconds to wait. RATE_LIMITED is too many requests a minute. TEST_DAILY_CAP_REACHED is a test key's daily AI requests, which start again at midnight UTC. SPEND_LIMIT_REACHED is your own spending limit. Retrying straight away, in a tight loop, only keeps you limited.

My test key cannot register a live webhook

403 WEBHOOK_TEST_ONLY means test is false or id selects a stored live endpoint in a request made with a test key. Use an endpoint with test: true. Manage live endpoints on the dashboard's Webhooks page, including secret rotation, test delivery and deletion.

My webhook signature check always fails

Check the signature over the raw request bytes before parsing them. Parsing the JSON and turning it back into text changes the bytes, so the check fails every time. Use the newest secret after rotating it, and read the PCIFIC-Signature header as t=<timestamp>,v1=<hex>. GET /api/v1/webhooks/{id}/deliveries shows what your receiver answered. The Webhooks guide has a verifier for Node and Python. A webhook address that is not a public https address is refused with 422 WEBHOOK_URL_INVALID.

My embed works locally but not on my shop

An embed session works only on the exact page address it was made for: the PCIFIC frame sends the page's address with every call. A session made with origin http://localhost:3000 is refused on https://your-shop.example with 403 EMBED_ORIGIN_MISMATCH, and www. and no www. are different addresses. Sessions also expire (401 EMBED_SESSION_EXPIRED), so make a new one each time your server shows the page, never once at build time.

After adding a second shop, my requests are refused

With more than one shop, a key for the whole business must say which shop each request is for, with ?marketplaceId= in the address: 400 MARKETPLACE_ID_REQUIRED otherwise. Get the ids from GET /api/v1/marketplaces. A key limited to one shop is refused for another shop with WRONG_SHOP.

My JSON is refused but looks right

A trailing comma, single quotes, or a body cut short is 400 INVALID_BODY with where /body. A few PixelTrace and Ask PCIFIC addresses read the body themselves and answer INVALID_JSON instead. A field of the wrong type, such as a number in quote marks, is 400 INVALID_FIELD or INVALID_BODY with where naming the field. Build the body with your language's JSON library rather than by joining strings.

TEST_AI_MODE_MISMATCH

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • A listing or review was started in a different AI mode from this follow-up request.

How to fix it

  • Keep X-PCIFIC-Test-AI: stub on synthetic jobs. Remove it on real-AI jobs. To change mode, start a new job.
TEST_AI_MODE_MISMATCH: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

INVALID_TEST_AI_MODE

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • X-PCIFIC-Test-AI is not stub, or was sent with a live key.

How to fix it

  • Send X-PCIFIC-Test-AI: stub with a test key for a free synthetic load test, or remove the header to use real AI.
INVALID_TEST_AI_MODE: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

MISSING_API_KEY

HTTP 401. PCIFIC could not tell who is calling: the API key or session is missing, unknown or no longer valid.

Usual causes

  • The Authorization header is missing or has no API key.

How to fix it

  • Send your key as Authorization: Bearer <key>. If you do not have a key, create one under API keys in your PCIFIC dashboard.
MISSING_API_KEY: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

UNAUTHORIZED

HTTP 401. PCIFIC could not tell who is calling: the API key or session is missing, unknown or no longer valid.

Usual causes

  • The Authorization header is malformed or its API key is not recognised. This response does not say whether an unrecognised key was ever issued.
  • No Authorization: Bearer header, or the key is not recognised. (POST /api/v1/pixel-trace/captures, GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos and 6 more)

How to fix it

  • Send the key as "Authorization: Bearer <key>" with nothing else in the value. Copy it again from where you stored it. If it is lost, make a new key on the API keys page.
  • Send a current key as "Authorization: Bearer <key>". Make a new one on the API keys page if needed.
UNAUTHORIZED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

KEY_REVOKED

HTTP 401. PCIFIC could not tell who is calling: the API key or session is missing, unknown or no longer valid.

Usual causes

  • The key was cancelled on the API keys page. A cancelled key can never work again.
  • The key was cancelled in the dashboard. (POST /api/v1/pixel-trace/captures, GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos and 6 more)

How to fix it

  • Make a new key on the API keys page and put it wherever the old one was stored.
  • Make a new key on the API keys page and use that.
KEY_REVOKED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

KEY_EXPIRED

HTTP 401. PCIFIC could not tell who is calling: the API key or session is missing, unknown or no longer valid.

Usual causes

  • The key passed the expiry date it was given when it was made.
  • The key passed its expiry date. (POST /api/v1/pixel-trace/captures, GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos and 6 more)

How to fix it

  • Make a new key on the API keys page and put it wherever the old one was stored. Choose a longer lifetime if you want the key to last longer.
  • Make a new key on the API keys page and use that.
KEY_EXPIRED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

BUSINESS_SUSPENDED

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • PCIFIC has suspended your business, so none of its keys work. The error says the reason PCIFIC gave.

How to fix it

  • The business owner should email support@pcific.co.uk to talk about it.
BUSINESS_SUSPENDED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

LIVE_KEYS_OFF

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • PCIFIC has switched off live keys to block requests from your business.

How to fix it

  • PCIFIC approves your account before you can make keys. Approved company email domains and accepted team invitations skip the wait. Account approval is the only approval from PCIFIC. To go live, choose Live key on the API keys page and press Activate live key; live calls spend credits bought from PCIFIC. Staff can suspend and restore live-key access (LIVE_KEYS_OFF). If blocked, use a test key and contact PCIFIC support about the block.
LIVE_KEYS_OFF: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

KEY_NOT_ALLOWED

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • Either a test key lacks the permission this address needs, or a live key tried to change tool settings or listing fields. Live keys can read those but never change them.
  • The key lacks the permission for one of the tools. (POST /api/v1/embed-sessions)
  • A test key without the pixel-trace permission (or read, for a GET). (POST /api/v1/pixel-trace/captures, GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos and 4 more)
  • A test key without the settings permission (or read, for a GET), or a live key trying to change settings. A live key can only read them. (GET /api/v1/pixel-trace/settings, PUT /api/v1/pixel-trace/settings)

How to fix it

  • For a test key, open API keys, choose Edit on the key and tick the permission tryThis names. For a live key, make the change on the dashboard or with a test key that has the permission.
  • Use a key with that tool's permission, or leave the tool out.
  • Edit the key on the API keys page and tick "Take and check photos with PixelTrace", or use another key.
  • Change settings on the dashboard, or with a test key that has the "Change tool settings" permission.
KEY_NOT_ALLOWED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed-sessions" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"origin":"https://your-shop.example","tools":["orbit","pixel-trace"]}'

MARKETPLACE_ID_REQUIRED

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • Your business has more than one shop, and the call does not say which one it is for: marketplaceId is missing from the address. Nothing was changed or charged.

How to fix it

  • List your shops with GET /api/v1/marketplaces and add ?marketplaceId=<id> to the address, for example /api/v1/safeguard/settings?marketplaceId=<id>. Send it on every call from then on.
MARKETPLACE_ID_REQUIRED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

MARKETPLACE_NOT_FOUND

HTTP 404. What the address points at does not exist for this key, or no longer exists.

Usual causes

  • marketplaceId names a shop your business does not have: a typo, a deleted shop, or another business's shop.
  • Your business has no shop with this id: a typo, a deleted shop, or another business's shop. (POST /api/v1/marketplaces, GET /api/v1/marketplaces/{id}, PUT /api/v1/marketplaces/{id}, DELETE /api/v1/marketplaces/{id})

How to fix it

  • List your shops with GET /api/v1/marketplaces and use one of their ids.
MARKETPLACE_NOT_FOUND: a request that works
curl "https://business.pcific.ai/api/v1/marketplaces" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

INVALID_ADDRESS

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • A part of the address could not be read, such as a version number that is not a whole number, or a category name that is not percent-encoded (written with %2F for a slash).
  • The version is not a whole number. (POST /api/v1/schema-versions/{version}/republish, GET /api/v1/schema-versions/{version}, GET /api/v1/schema-versions/{version}/categories/{category})

How to fix it

  • Check the address. Version numbers are whole numbers, and a category such as Vehicles/Cars is written Vehicles%2FCars.
  • Read problems and tryThis in the error body, change the request to match, then send it again.
INVALID_ADDRESS: a request that works
curl -X POST "https://business.pcific.ai/api/v1/schema-versions/$VERSION/republish" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

INVALID_JSON

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • The body is not a JSON object (text in curly brackets), or is not JSON at all. (POST /api/key-link)
  • The body is not a JSON object. (POST /api/v1/webhooks, PUT /api/v1/webhooks/{id}, POST /api/v1/embed-sessions and 7 more)

How to fix it

  • Send a JSON object and the header "Content-Type: application/json". The error shows an example of what the address expects.
  • Send a JSON object with the header "Content-Type: application/json".
INVALID_JSON: a request that works
curl -X POST "https://business.pcific.ai/api/v1/webhooks" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/pcific/webhooks","test":true,"events":["orbit.finished","safeguard.review_finished"]}'

INVALID_BODY

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • The body could not be read as JSON for this address.

How to fix it

  • Send a JSON body with the header "Content-Type: application/json" and check the commas and quote marks.
INVALID_BODY: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

INVALID_FIELD

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • A field has the wrong type, is missing or is too long. problems lists each place, as a path such as /images/0, with its own tryThis.
  • origin, tools or minutes is missing or not allowed; the error says which and how to write it. (POST /api/v1/embed-sessions)
  • A theme setting or the logo is not one PCIFIC can use; problems names each at its path. (PUT /api/v1/embed/branding)
  • Neither or both of url and css were sent. (POST /api/v1/embed/branding/scan)
  • name is missing, over 80 characters, or another of your shops already has it. problems names the field. (POST /api/v1/marketplaces, PUT /api/v1/marketplaces/{id})
  • copyFrom is not text, copy is not a list of known parts, or copy was sent without copyFrom. problems names the field. (POST /api/v1/marketplaces)
  • An input field is missing or invalid. (POST /api/key-link)

How to fix it

  • Fix each place listed in problems, using its tryThis, then send the request again.
  • Send {"origin": "https://your-shop.example", "tools": ["orbit"]}.
  • Send each setting as the field list describes.
  • Send one of them.
  • Send a name your team will recognise and that no other shop of yours uses, for example {"name": "Voltback"}.
  • Send copyFrom with a shop id from GET /api/v1/marketplaces and copy with known parts, or leave both out to start from scratch.
  • Correct each field listed in problems.
INVALID_FIELD: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed-sessions" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"origin":"https://your-shop.example","tools":["orbit","pixel-trace"]}'

INVALID_SETTING

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • A tool setting has the wrong type, is out of range or is too long. The message names the setting.
  • A setting has the wrong type, is out of range, is too long or contains HTML tags in a plain-text field. The message names it. (PUT /api/v1/embed/branding, POST /api/v1/marketplaces, PUT /api/v1/marketplaces/{id}, POST /api/v1/schema-versions)
  • A setting is not text, is over its limit, or name is blank. The message names it. (PUT /api/v1/marketplace/settings)

How to fix it

  • Send the setting in the form the message shows. The guide for the tool lists every setting and its limits.
  • Use plain text without HTML tags for text settings. Send the setting in the form the message shows, then send the request again.
  • For name, enter at least one non-space character, for example Threadloop. Correct the named setting and save again.
INVALID_SETTING: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/embed/branding" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"theme":{"accent":"#e11d48","radius":6,"font":"Inter"}}'

NOT_FOUND

HTTP 404. What the address points at does not exist for this key, or no longer exists.

Usual causes

  • There is nothing at this address, or no record with this id in your business.
  • No webhook endpoint with this id for your business. (GET /api/v1/webhooks/{id}, PUT /api/v1/webhooks/{id}, DELETE /api/v1/webhooks/{id} and 3 more)
  • The working copy has no category with this name. (GET /api/v1/schema-draft/categories/{category})
  • No category in the working copy with this id for your business. (DELETE /api/v1/schema-draft/categories/{category})
  • This business has no version with that number. (POST /api/v1/schema-versions/{version}/republish)
  • No version with this id for your business. (GET /api/v1/schema-versions/{version})
  • No category in this version with this id for your business. (GET /api/v1/schema-versions/{version}/categories/{category})
  • The connection or token is unknown or expired. (POST /api/key-link)

How to fix it

  • Check the address and the id. A record from another business, or one that was deleted, is not found.
  • Check the id. Ids from another business, or from before it was deleted, are not found.
  • Check the name, capitals included. List the working copy with GET /api/v1/schema-draft, or save the category with PUT /api/v1/schema-draft/categories/{category}.
  • Choose a version from GET /api/v1/schema-versions, then republish it.
  • Start a new connection.
NOT_FOUND: a request that works
curl -X GET "https://business.pcific.ai/api/v1/webhooks/$ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

METHOD_NOT_ALLOWED

HTTP 405. The address exists, but not with this method.

Usual causes

  • The address exists but not for this kind of request, for example POST on an address that only reads.

How to fix it

  • Use the method the guide shows for this address: GET reads, POST starts work or publishes, PUT changes, DELETE removes.
METHOD_NOT_ALLOWED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

BODY_TOO_LARGE

HTTP 413. The request is bigger than this address accepts.

Usual causes

  • The body is bigger than the website lets through for this address. Most JSON calls take up to 16 KB. Uploads take more (see Limits).
  • The body is larger than 4096 bytes. (POST /api/key-link)

How to fix it

  • Send less in one request, or split the work over several requests. For an upload, send it as a file in the form the guide shows.
  • Send only the documented connection fields.
BODY_TOO_LARGE: a request that works
curl -X POST "https://business.pcific.ai/api/key-link" \
  -H "Content-Type: application/json" \
  -d '{"suggestedName":"My shop","destination":".env"}'

RATE_LIMITED

HTTP 429. Too much was sent too fast, or a daily or spending limit was reached. Retry-After says when to try again.

Usual causes

  • A limit of requests per minute was reached: 120 requests that start work per key, 600 PixelTrace photo checks per key, 1,200 requests of any kind per key, or 1,200 requests from one network address.
  • This API key started 120 pieces of work (a photo group counts as one; photo checks are separate), sent 600 PixelTrace photo-check requests, or sent 1,200 requests of any kind in the last minute, or 1,200 requests came from this network address. (POST /api/v1/pixel-trace/captures, GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos and 18 more)
  • Five connections started from this network in an hour. (POST /api/key-link)

How to fix it

  • Wait the number of seconds in the Retry-After header, then send the request again. Send requests one after another, and give each environment its own key.
  • Wait the seconds in the Retry-After header, then send the request again.
  • Wait Retry-After seconds, then start again.
RATE_LIMITED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"listingId":"listing-123","listingTitle":"Blue denim jacket"}'

TEST_DAILY_CAP_REACHED

HTTP 429. Too much was sent too fast, or a daily or spending limit was reached. Retry-After says when to try again.

Usual causes

  • Your test keys have used this shop's daily cap of AI requests. PCIFIC's ceiling always applies, 200 per shop per UTC day by default, or your lower saved cap.
  • A test key's AI requests reached today's daily cap. The count starts again at midnight UTC. (POST /api/v1/listings, POST /api/v1/listings/{id}/answers, POST /api/v1/listings/{id}/retry and 3 more)

How to fix it

  • Wait until midnight UTC (the clock the cap resets on), or use a live key. If you chose a lower cap, you can restore PCIFIC's ceiling on the API keys page. Requests that failed on PCIFIC's side are not counted.
  • Wait until midnight UTC, or raise the daily cap for test keys on the dashboard API keys page.
TEST_DAILY_CAP_REACHED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/listings" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"notes":"iPhone 13, good condition, works fine. Selling my old phone. No box. Collection preferred. Asking £315.","details":{"price":{"amount":31500,"currency":"GBP"}},"images":["3f1c2a9e-5b7d-4e21-9c0a-6d8f4b1e7a52"]}'

SPEND_LIMIT_REACHED

HTTP 429. Too much was sent too fast, or a daily or spending limit was reached. Retry-After says when to try again.

Usual causes

  • A live key reached a daily, weekly or monthly spending limit that you set for this shop. That shop's requests that spend credits are refused until the limit is raised or the window starts again. Your other shops are not affected.

How to fix it

  • Raise or clear the shop's limit on the Usage page or with PUT /api/v1/spend-limits?marketplaceId=<id>, or wait for the window to start again (UTC). Test keys are not affected.
SPEND_LIMIT_REACHED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

OUT_OF_CREDITS

HTTP 402.

Usual causes

  • A live key's request would spend more credits than your business has. No work started and nothing was charged.

How to fix it

  • Contact PCIFIC support to add credits. Test keys keep working.
OUT_OF_CREDITS: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

SPEND_LIMIT_CHECK_FAILED

HTTP 503. PCIFIC, or a service it relies on, is too busy or not available right now.

Usual causes

  • PCIFIC could not check your spending limits for a request that spends credits. No work started and nothing was charged.

How to fix it

  • Send the request again in a few seconds. If it keeps failing, contact PCIFIC support.
SPEND_LIMIT_CHECK_FAILED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

CREDIT_CHECK_FAILED

HTTP 503. PCIFIC, or a service it relies on, is too busy or not available right now.

Usual causes

  • PCIFIC could not check your credit balance for a request that spends credits. No work started and nothing was charged.

How to fix it

  • Send the request again in a few seconds. If it keeps failing, contact PCIFIC support.
CREDIT_CHECK_FAILED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

INTERNAL

HTTP 500. Something failed on PCIFIC's side, not because of your request.

Usual causes

  • Something went wrong on PCIFIC's side.

How to fix it

  • Send the request again in a moment. If it keeps happening, contact PCIFIC support with the time of the request.
INTERNAL: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"listingId":"listing-123","listingTitle":"Blue denim jacket"}'

BACKEND_UNAVAILABLE

HTTP 502 or 503 or 504. PCIFIC, or a service it relies on, could not answer. PCIFIC, or a service it relies on, is too busy or not available right now. PCIFIC took longer to answer than the address allows.

Usual causes

  • The website could not reach the PCIFIC API behind it. (POST /api/key-link)
  • The PCIFIC API is not switched on or reachable right now. (POST /api/key-link)
  • The PCIFIC API took longer than the website waits for this address (15 seconds for most addresses, up to 60 for photos). (POST /api/key-link)
  • The PCIFIC API could not be reached. (POST /api/v1/pixel-trace/captures, GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos and 18 more)
  • The PCIFIC API is not available right now. (POST /api/v1/pixel-trace/captures, GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos and 18 more)
  • PCIFIC took longer than the route allows to answer. (POST /api/v1/pixel-trace/captures, GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos and 18 more)

How to fix it

  • Wait a few minutes and send the request again. Use the same Idempotency-Key if the call takes one.
  • Wait a few minutes and send the request again. If it keeps happening, contact PCIFIC support.
  • Send the same request again, with the same Idempotency-Key if the call takes one, so the work is not done twice.
  • Try again in a few minutes.
  • Send the same request again.
BACKEND_UNAVAILABLE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"listingId":"listing-123","listingTitle":"Blue denim jacket"}'

INVALID_IDEMPOTENCY_KEY

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • The Idempotency-Key header is empty, longer than 255 characters, or has spaces or characters that are not visible ASCII.

How to fix it

  • Send a new random value for each new piece of work, for example a UUID (a long random ID such as 3f2b8c1e-6a4d-4f7e-9b1a-2c5d8e9f0a1b).
INVALID_IDEMPOTENCY_KEY: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f1c2b9e-7d3a-4c55-9a51-0e6b2f8d1c47" \
  -d '{"listingId":"listing-123"}'

IDEMPOTENCY_KEY_IN_USE

HTTP 409. The request is well formed, but it does not fit where the work is now.

Usual causes

  • A request with this key is still running.

How to fix it

  • Wait the 2 seconds in the Retry-After header and send the same request again. Once the first one finishes you get its answer.
IDEMPOTENCY_KEY_IN_USE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f1c2b9e-7d3a-4c55-9a51-0e6b2f8d1c47" \
  -d '{"listingId":"listing-123"}'

IDEMPOTENCY_KEY_REUSED

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • This key was already used in the last 24 hours with a different address, shop, body or X-PCIFIC-Test-AI mode.

How to fix it

  • Use a new key for a new request. Send an old key again only with exactly the same address, marketplaceId, body and X-PCIFIC-Test-AI mode.
IDEMPOTENCY_KEY_REUSED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f1c2b9e-7d3a-4c55-9a51-0e6b2f8d1c47" \
  -d '{"listingId":"listing-123"}'

NOT_AVAILABLE_YET

HTTP 503. PCIFIC, or a service it relies on, is too busy or not available right now.

Usual causes

  • You called an address PCIFIC has not built yet, for example one from an older guide or prompt.

How to fix it

  • Use only the addresses in the current guides. The list of every real address is at /openapi.json.
NOT_AVAILABLE_YET: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

PHOTO_UPLOAD_BUSINESS_BUSY

HTTP 429. Too much was sent too fast, or a daily or spending limit was reached. Retry-After says when to try again.

Usual causes

  • Your business has reached its photo request or byte capacity across Orbit and PixelTrace.

How to fix it

  • Wait the 20 seconds in Retry-After, then send the photo upload again. Send fewer uploads at the same time.
PHOTO_UPLOAD_BUSINESS_BUSY: a request that works
curl -X POST "https://business.pcific.ai/api/v1/images" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "photos=@front.jpg"

PHOTO_UPLOAD_BUSY

HTTP 503. PCIFIC, or a service it relies on, is too busy or not available right now.

Usual causes

  • The server's photo capacity is full, or a photo worker was not available within 20 seconds.

How to fix it

  • Wait the 20 seconds in Retry-After, then send the photo upload again.
PHOTO_UPLOAD_BUSY: a request that works
curl -X POST "https://business.pcific.ai/api/v1/images" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "photos=@front.jpg"

PHOTO_UPLOAD_TIMEOUT

HTTP 408. The request body did not finish arriving in time, so nothing was done.

Usual causes

  • The photo upload body did not finish arriving within 120 seconds.

How to fix it

  • Check your connection, then send the photo upload again. Send fewer photos per upload if needed.
PHOTO_UPLOAD_TIMEOUT: a request that works
curl -X POST "https://business.pcific.ai/api/v1/images" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "photos=@front.jpg"

EMBED_SESSION_UNKNOWN

HTTP 401. PCIFIC could not tell who is calling: the API key or session is missing, unknown or no longer valid.

Usual causes

  • The embed session in the Authorization header is not recognised: it was mistyped, cut short, or made by a key since revoked.

How to fix it

  • Have your shop's server make a new embed session with POST /api/v1/embed-sessions and put its token in the session attribute of the PCIFIC tag, then reload the page.
EMBED_SESSION_UNKNOWN: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed-sessions" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin":"https://your-shop.example","tools":["orbit"]}'

EMBED_SESSION_EXPIRED

HTTP 401. PCIFIC could not tell who is calling: the API key or session is missing, unknown or no longer valid.

Usual causes

  • The embed session has expired. Sessions last minutes (60 by default), so one saved in a cached page stops working.

How to fix it

  • Have your shop's server make a new embed session with POST /api/v1/embed-sessions each time it shows the page, then reload the page.
EMBED_SESSION_EXPIRED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed-sessions" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin":"https://your-shop.example","tools":["orbit"]}'

EMBED_ORIGIN_MISMATCH

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • The embed session was made for one page address (origin) but is used on another, such as a session made for http://localhost:3000 used on https://your-shop.example, or for www.your-shop.example used on your-shop.example.

How to fix it

  • Make the session with "origin" set to the exact address of the page that shows the tool: scheme, name and port, with no path. Then reload the page.
EMBED_ORIGIN_MISMATCH: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed-sessions" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin":"https://your-shop.example","tools":["orbit"]}'

EMBED_SESSION_NOT_ALLOWED

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • The embed session was used for a tool it was not made for, or for an address only your server may call, such as settings or documents.

How to fix it

  • Add the tool to "tools" when your server makes the session, and make sure the API key it uses has that tool's permission. Call settings and documents from your own server with your secret key.
EMBED_SESSION_NOT_ALLOWED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed-sessions" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin":"https://your-shop.example","tools":["orbit"]}'

EMBED_SESSION_NEEDS_KEY

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • POST /api/v1/embed-sessions was called from a dashboard sign-in rather than with an API key. (Calling it with an embed session is EMBED_SESSION_NOT_ALLOWED.)

How to fix it

  • Call POST /api/v1/embed-sessions from your shop's server with your API key in the Authorization header.
EMBED_SESSION_NEEDS_KEY: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed-sessions" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin":"https://your-shop.example","tools":["orbit"]}'

WRONG_SHOP

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • The API key is limited to one shop, but marketplaceId in the address names a different shop, or the id you sent belongs to another of your shops.

How to fix it

  • Send the marketplaceId of the key's own shop, or leave marketplaceId out. To work with another shop, use a key made for that shop or for the whole business.
WRONG_SHOP: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

SHOP_LIMIT_REACHED

HTTP 409. The request is well formed, but it does not fit where the work is now.

Usual causes

  • Your business has reached the number of shops it may have.

How to fix it

  • Contact PCIFIC support to raise it, then add the shop again.
SHOP_LIMIT_REACHED: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

BODY_INCOMPLETE

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • The request body stopped arriving before it was complete, for example because the connection dropped.

How to fix it

  • Send the complete request again with the same Idempotency-Key.
BODY_INCOMPLETE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f1c2b9e-7d3a-4c55-9a51-0e6b2f8d1c47" \
  -d '{"listingId":"listing-123"}'

BODY_TIMEOUT

HTTP 408. The request body did not finish arriving in time, so nothing was done.

Usual causes

  • The request body did not finish arriving within 120 seconds.

How to fix it

  • Check the connection and send the complete request again with the same Idempotency-Key.
BODY_TIMEOUT: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f1c2b9e-7d3a-4c55-9a51-0e6b2f8d1c47" \
  -d '{"listingId":"listing-123"}'

BODY_TOO_SLOW

HTTP 408. The request body did not finish arriving in time, so nothing was done.

Usual causes

  • The website stopped waiting for the request body: nothing arrived for a while, or it was not all sent in time. Nothing was done.

How to fix it

  • Send the whole request again from a steady connection. For a large upload, send fewer or smaller files at once.
BODY_TOO_SLOW: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

CHECKUP_COMING_SOON

HTTP 503. PCIFIC, or a service it relies on, is too busy or not available right now.

Usual causes

  • The public website does not offer Checkup or its device certificate addresses yet. No device was checked or charged.

How to fix it

  • Wait for Checkup to be announced in the changelog, then send the request again.
CHECKUP_COMING_SOON: a request that works
curl "https://business.pcific.ai/api/v1/key" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

IDEMPOTENCY_STORAGE_FAILED

HTTP 500. Something failed on PCIFIC's side, not because of your request.

Usual causes

  • The safe-retry layer could not read or save this request's bytes. This is a problem on PCIFIC's side.

How to fix it

  • Send the same request again with the same Idempotency-Key. If it keeps failing, contact PCIFIC support with the requestId.
IDEMPOTENCY_STORAGE_FAILED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f1c2b9e-7d3a-4c55-9a51-0e6b2f8d1c47" \
  -d '{"listingId":"listing-123"}'

REQUEST_REFUSED

HTTP 400 or 409. The request itself needs changing: a field, header, address or body is not in the form this address takes. The request is well formed, but it does not fit where the work is now.

Usual causes

  • The website refused the request before it reached PCIFIC's API, and had no more specific code for it.
  • An Orbit published outcome was reported while the latest Safeguard review scored below the shop's minimum and still had open seller questions.
  • The latest Safeguard review for this listing scored below the shop's minimum and has open seller questions. (POST /api/v1/listings/{id}/outcome)

How to fix it

  • Check the address and body against the API reference at /openapi.json. If it still fails, quote requestId to PCIFIC support.
  • Answer every open seller question with POST /api/v1/safeguard/reviews/{reviewId}/answers, wait for the review to finish, then report the outcome again.
  • Answer every open seller question with POST /api/v1/safeguard/reviews/{reviewId}/answers, wait for the review, then report the published outcome again.
REQUEST_REFUSED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/listings/$ID/outcome" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"event":"published","changes":[{"field":"title","percentChanged":20}],"finalListing":{"title":"iPhone 13 128GB, good condition, collection preferred","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}}}'

WEBHOOK_TEST_ONLY

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • The test field is false, or id selects a live endpoint, but the request uses a test key.

How to fix it

  • Use a test endpoint with test: true. Manage live endpoints on the dashboard's Webhooks page.
WEBHOOK_TEST_ONLY: a request that works
curl -X GET "https://business.pcific.ai/api/v1/webhooks/$ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

WEBHOOK_URL_INVALID

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The url field is not an allowed public HTTPS destination.

How to fix it

  • Use the public HTTPS address of your receiver without surrounding spaces or credentials. Check its DNS records.
WEBHOOK_URL_INVALID: a request that works
curl -X POST "https://business.pcific.ai/api/v1/webhooks" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/pcific/webhooks","test":true,"events":["orbit.finished","safeguard.review_finished"]}'

WEBHOOK_EVENTS_INVALID

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The events field must contain between 1 and 9 supported event names.

How to fix it

  • Choose at least one name from GET /api/v1/webhooks eventTypes.
WEBHOOK_EVENTS_INVALID: a request that works
curl -X POST "https://business.pcific.ai/api/v1/webhooks" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/pcific/webhooks","test":true,"events":["orbit.finished","safeguard.review_finished"]}'

WEBHOOK_LIMIT

HTTP 409. The request is well formed, but it does not fit where the work is now.

Usual causes

  • This shop already has 10 endpoints.

How to fix it

  • Remove an unused endpoint before adding another.
WEBHOOK_LIMIT: a request that works
curl -X POST "https://business.pcific.ai/api/v1/webhooks" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/pcific/webhooks","test":true,"events":["orbit.finished","safeguard.review_finished"]}'

WEBHOOK_UPDATE_INVALID

HTTP 409. The request is well formed, but it does not fit where the work is now.

Usual causes

  • The id or test environment does not match an endpoint in this shop.

How to fix it

  • Read the endpoint list and send its existing test value. Add a new endpoint to change environments.
WEBHOOK_UPDATE_INVALID: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/webhooks/$ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/pcific/webhooks","test":true,"events":["orbit.finished","safeguard.review_finished"]}'

LOGO_NOT_PNG

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The logo is not a PNG file.

How to fix it

  • Export the logo as a PNG with a transparent background.
LOGO_NOT_PNG: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/embed/branding" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"theme":{"accent":"#e11d48","radius":6,"font":"Inter"}}'

LOGO_DAMAGED

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The logo PNG could not be read.

How to fix it

  • Export the logo again as a PNG and upload the new file.
LOGO_DAMAGED: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/embed/branding" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"theme":{"accent":"#e11d48","radius":6,"font":"Inter"}}'

LOGO_SIZE

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The logo is under 32 pixels on its shortest side or over 4096 on its longest.

How to fix it

  • Export the logo between 128 and 1024 pixels wide.
LOGO_SIZE: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/embed/branding" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"theme":{"accent":"#e11d48","radius":6,"font":"Inter"}}'

LOGO_TOO_LARGE

HTTP 413. The request is bigger than this address accepts.

Usual causes

  • The logo is over 512 KB.

How to fix it

  • Export the logo smaller, or compress it.
LOGO_TOO_LARGE: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/embed/branding" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"theme":{"accent":"#e11d48","radius":6,"font":"Inter"}}'

LOGO_NOT_TRANSPARENT

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • PCIFIC could not find a see-through background in the logo.

How to fix it

  • Export it with a transparent background, or send logoTransparencyConfirmed: true if it is transparent and the check is wrong.
LOGO_NOT_TRANSPARENT: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/embed/branding" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"theme":{"accent":"#e11d48","radius":6,"font":"Inter"}}'

CSS_TOO_LARGE

HTTP 413. The request is bigger than this address accepts.

Usual causes

  • The pasted CSS is over 200 KB.

How to fix it

  • Paste only your colours, fonts and corner sizes.
CSS_TOO_LARGE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed/branding/scan" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"css":":root { --brand-primary: #e11d48; }"}'

SCAN_NOT_ALLOWED

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The address is not a public https page.

How to fix it

  • Enter your shop's public home page.
SCAN_NOT_ALLOWED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed/branding/scan" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"css":":root { --brand-primary: #e11d48; }"}'

SCAN_UNREACHABLE

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The page could not be reached or answered with an error.

How to fix it

  • Check it opens in your browser, or paste your CSS instead.
SCAN_UNREACHABLE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed/branding/scan" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"css":":root { --brand-primary: #e11d48; }"}'

SCAN_TIMED_OUT

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The page took over 10 seconds.

How to fix it

  • Try again, or paste your CSS instead.
SCAN_TIMED_OUT: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed/branding/scan" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"css":":root { --brand-primary: #e11d48; }"}'

SCAN_TOO_LARGE

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The page is too large to read.

How to fix it

  • Paste your CSS instead.
SCAN_TOO_LARGE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/embed/branding/scan" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"css":":root { --brand-primary: #e11d48; }"}'

SCHEMA_STORAGE_FULL

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • Copying listing-fields would take the business over 200 MB or 100,000 listing field files. No shop was made. (POST /api/v1/marketplaces)
  • The business would store more than 200 MB or 100,000 listing field files. Nothing was saved. (PUT /api/v1/schema-draft/categories/{category})

How to fix it

  • Delete categories you no longer use with DELETE /api/v1/schema-draft/categories/{category}, or leave listing-fields out of copy.
  • Delete categories you no longer use with DELETE /api/v1/schema-draft/categories/{category}. A file no published version uses is removed at once, freeing its space.
SCHEMA_STORAGE_FULL: a request that works
curl "https://business.pcific.ai/api/v1/schema-draft" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

LAST_MARKETPLACE

HTTP 409. The request is well formed, but it does not fit where the work is now.

Usual causes

  • This is your business's only shop, so it cannot be deleted.

How to fix it

  • Add another shop first with POST /api/v1/marketplaces if you want to delete this one, or rename it instead.
LAST_MARKETPLACE: a request that works
curl -X DELETE "https://business.pcific.ai/api/v1/marketplaces/$ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

SETTINGS_CONFLICT

HTTP 409. The request is well formed, but it does not fit where the work is now.

Usual causes

  • A setting named in expected changed since it was read.

How to fix it

  • Reload the shop settings, check the current value, then send the intended change with the new expected value.
SETTINGS_CONFLICT: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/marketplace/settings" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"language":"French","voice":"warm","aiNotice":"AI written. Check the details before you buy."}'

SCHEMA_INVALID

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The file is not a schema PCIFIC can use. problems names each place and what to change.

How to fix it

  • Read problems and tryThis in the error body, change the request to match, then send it again.
SCHEMA_INVALID: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/schema-draft/categories/$CATEGORY" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","description":"Mobile phones and smartphones, any brand.","x-pcific-keywords":["smartphone","cell phone","iPhone","Android phone"],"required":["title","description","brand","model","condition","price"],"properties":{"title":{"type":"string","maxLength":80,"description":"The listing title buyers see, up to 80 characters."},"description":{"type":"string","description":"A short description of the phone for buyers."},"brand":{"type":"string","description":"The phone'\''s maker, for example Apple or Samsung."},"model":{"type":"string","description":"The phone'\''s model name, for example iPhone 13."},"storage_gb":{"type":"integer","enum":[64,128,256,512,1024],"description":"Storage in gigabytes."},"condition":{"type":"string","enum":["New","Like new","Good","Fair","For parts"],"description":"The phone'\''s condition, as one of the options. Only the seller knows this.","x-pcific-ask-seller":true},"battery_health":{"type":"integer","minimum":0,"maximum":100,"description":"Battery health as a whole percent, from the phone'\''s battery settings.","x-pcific-ask-seller":true},"price":{"type":"object","description":"The asking price.","x-pcific-money":true,"required":["amount","currency"],"properties":{"amount":{"type":"integer","description":"Price in pence."},"currency":{"type":"string","enum":["GBP"],"description":"Currency code."}}}}}'

CATEGORY_INVALID

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The category name or parent is not allowed.

How to fix it

  • Read problems and tryThis in the error body, change the request to match, then send it again.
CATEGORY_INVALID: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/schema-draft/categories/$CATEGORY" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","description":"Mobile phones and smartphones, any brand.","x-pcific-keywords":["smartphone","cell phone","iPhone","Android phone"],"required":["title","description","brand","model","condition","price"],"properties":{"title":{"type":"string","maxLength":80,"description":"The listing title buyers see, up to 80 characters."},"description":{"type":"string","description":"A short description of the phone for buyers."},"brand":{"type":"string","description":"The phone'\''s maker, for example Apple or Samsung."},"model":{"type":"string","description":"The phone'\''s model name, for example iPhone 13."},"storage_gb":{"type":"integer","enum":[64,128,256,512,1024],"description":"Storage in gigabytes."},"condition":{"type":"string","enum":["New","Like new","Good","Fair","For parts"],"description":"The phone'\''s condition, as one of the options. Only the seller knows this.","x-pcific-ask-seller":true},"battery_health":{"type":"integer","minimum":0,"maximum":100,"description":"Battery health as a whole percent, from the phone'\''s battery settings.","x-pcific-ask-seller":true},"price":{"type":"object","description":"The asking price.","x-pcific-money":true,"required":["amount","currency"],"properties":{"amount":{"type":"integer","description":"Price in pence."},"currency":{"type":"string","enum":["GBP"],"description":"Currency code."}}}}}'

TOO_MANY_CATEGORIES

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The business would have more than 20,000 categories.

How to fix it

  • Read problems and tryThis in the error body, change the request to match, then send it again.
TOO_MANY_CATEGORIES: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/schema-draft/categories/$CATEGORY" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","description":"Mobile phones and smartphones, any brand.","x-pcific-keywords":["smartphone","cell phone","iPhone","Android phone"],"required":["title","description","brand","model","condition","price"],"properties":{"title":{"type":"string","maxLength":80,"description":"The listing title buyers see, up to 80 characters."},"description":{"type":"string","description":"A short description of the phone for buyers."},"brand":{"type":"string","description":"The phone'\''s maker, for example Apple or Samsung."},"model":{"type":"string","description":"The phone'\''s model name, for example iPhone 13."},"storage_gb":{"type":"integer","enum":[64,128,256,512,1024],"description":"Storage in gigabytes."},"condition":{"type":"string","enum":["New","Like new","Good","Fair","For parts"],"description":"The phone'\''s condition, as one of the options. Only the seller knows this.","x-pcific-ask-seller":true},"battery_health":{"type":"integer","minimum":0,"maximum":100,"description":"Battery health as a whole percent, from the phone'\''s battery settings.","x-pcific-ask-seller":true},"price":{"type":"object","description":"The asking price.","x-pcific-money":true,"required":["amount","currency"],"properties":{"amount":{"type":"integer","description":"Price in pence."},"currency":{"type":"string","enum":["GBP"],"description":"Currency code."}}}}}'

SCHEMA_TOO_LARGE

HTTP 413. The request is bigger than this address accepts.

Usual causes

  • The file is over 10 MB.

How to fix it

  • Send less in one request, within the limit named in the error.
SCHEMA_TOO_LARGE: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/schema-draft/categories/$CATEGORY" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","description":"Mobile phones and smartphones, any brand.","x-pcific-keywords":["smartphone","cell phone","iPhone","Android phone"],"required":["title","description","brand","model","condition","price"],"properties":{"title":{"type":"string","maxLength":80,"description":"The listing title buyers see, up to 80 characters."},"description":{"type":"string","description":"A short description of the phone for buyers."},"brand":{"type":"string","description":"The phone'\''s maker, for example Apple or Samsung."},"model":{"type":"string","description":"The phone'\''s model name, for example iPhone 13."},"storage_gb":{"type":"integer","enum":[64,128,256,512,1024],"description":"Storage in gigabytes."},"condition":{"type":"string","enum":["New","Like new","Good","Fair","For parts"],"description":"The phone'\''s condition, as one of the options. Only the seller knows this.","x-pcific-ask-seller":true},"battery_health":{"type":"integer","minimum":0,"maximum":100,"description":"Battery health as a whole percent, from the phone'\''s battery settings.","x-pcific-ask-seller":true},"price":{"type":"object","description":"The asking price.","x-pcific-money":true,"required":["amount","currency"],"properties":{"amount":{"type":"integer","description":"Price in pence."},"currency":{"type":"string","enum":["GBP"],"description":"Currency code."}}}}}'

SCHEMA_INTEGRITY

HTTP 500. Something failed on PCIFIC's side, not because of your request.

Usual causes

  • The saved file failed its integrity check and was not sent.

How to fix it

  • Contact PCIFIC with the draft category named in the address.
SCHEMA_INTEGRITY: a request that works
curl -X GET "https://business.pcific.ai/api/v1/schema-draft/categories/$CATEGORY" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

SCHEMA_EXPORT_TOO_LARGE

HTTP 413. The request is bigger than this address accepts.

Usual causes

  • The draft export exceeds 16 MiB of saved files and category names.

How to fix it

  • List GET /api/v1/schema-draft and download each file with GET /api/v1/schema-draft/categories/{category}, keeping its parent for restoration.
SCHEMA_EXPORT_TOO_LARGE: a request that works
curl -X GET "https://business.pcific.ai/api/v1/schema-draft/export" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

NOTHING_TO_PUBLISH

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • The working copy has no listing fields, or is unchanged since the latest publish.

How to fix it

  • Upload or change a category with PUT /api/v1/schema-draft/categories/{category}, then publish again. No version was saved.
NOTHING_TO_PUBLISH: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/schema-draft/categories/Phones" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"object","properties":{"title":{"type":"string","description":"The phone name buyers see"}}}'

PUBLISH_INVALID

HTTP 422. The body was read, but what it holds cannot be used.

Usual causes

  • A category does not fit with the others, for example its parent is missing. problems names each one.

How to fix it

  • Read problems and tryThis in the error body, change the request to match, then send it again.
PUBLISH_INVALID: a request that works
curl -X POST "https://business.pcific.ai/api/v1/schema-versions" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"about":"Used and refurbished phones, tablets and smartwatches."}'

INVALID_MONITORING_RANGE

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • from or to is not a valid date, or from is after to. (GET /api/v1/monitoring/summary)
  • from or to is not a real date, or from is after to. (GET /api/v1/logs, GET /api/v1/logs/export)

How to fix it

  • Send from on or before to as YYYY-MM-DD, for example 2026-10-26, or ISO 8601 times with a timezone.
  • Send from on or before to, using YYYY-MM-DD or ISO 8601 times with a timezone.
INVALID_MONITORING_RANGE: a request that works
curl -X GET "https://business.pcific.ai/api/v1/monitoring/summary" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

SPEND_LIMITS_REJECTED

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • An unknown window, or a limit that is not a whole number of credits from 1 to 100,000,000. problems names the window.

How to fix it

  • Read problems and tryThis in the error body, change the request to match, then send it again.
SPEND_LIMITS_REJECTED: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/spend-limits" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"daily":100,"weekly":null,"monthly":2000}'

INVALID_FAILURES

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • failures is not a whole number from 1 to 100.

How to fix it

  • Read problems and tryThis in the error body, change the request to match, then send it again.
INVALID_FAILURES: a request that works
curl -X GET "https://business.pcific.ai/api/v1/analytics" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

INVALID_REQUEST_FILTERS

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • A log filter is invalid. The message names the field.

How to fix it

  • Use the filter values in this route's reference, then try again.
INVALID_REQUEST_FILTERS: a request that works
curl -X GET "https://business.pcific.ai/api/v1/logs" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

INVALID_REQUEST_ID

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • requestId is neither a request UUID nor a log row number.

How to fix it

  • Use the complete requestId from the API response.
INVALID_REQUEST_ID: a request that works
curl -X GET "https://business.pcific.ai/api/v1/logs/$REQUEST_ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

REQUEST_NOT_FOUND

HTTP 404. What the address points at does not exist for this key, or no longer exists.

Usual causes

  • This request does not belong to your business and this key's shop.

How to fix it

  • Choose a request from GET /api/v1/logs with the same key.
REQUEST_NOT_FOUND: a request that works
curl -X GET "https://business.pcific.ai/api/v1/logs/$REQUEST_ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

REQUEST_CONTENTS_UNAVAILABLE

HTTP 503. PCIFIC, or a service it relies on, is too busy or not available right now.

Usual causes

  • Stored contents could not be opened.

How to fix it

  • Retry. If it still fails, contact PCIFIC support with requestId.
REQUEST_CONTENTS_UNAVAILABLE: a request that works
curl -X GET "https://business.pcific.ai/api/v1/logs/$REQUEST_ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

LOG_EXPORT_TOO_LARGE

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • from/to cover more than 31 days or 10,000 requests.

How to fix it

  • Choose a shorter from/to range of at most 31 days and 10,000 requests, then export each range separately.
LOG_EXPORT_TOO_LARGE: a request that works
curl -X GET "https://business.pcific.ai/api/v1/logs/export" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

MODEL_TIER_INVALID

HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.

Usual causes

  • modelTier is not standard or ultra-fast.

How to fix it

  • Send modelTier: standard (the default) or ultra-fast, or leave it out.
MODEL_TIER_INVALID: a request that works
curl -X POST "https://business.pcific.ai/api/v1/ask-pcific" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"question":"Can I return this coat if I change my mind?","quotes":true,"item":{"type":"listing","title":"Wool coat, navy, size M","details":{"condition":"Used, good","status":"Available"}}}'

HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • Origin or Sec-Fetch-Site identifies a browser request.

How to fix it

  • Call from your script or terminal without browser headers.
KEY_LINK_NOT_FOR_BROWSERS: a request that works
curl -X POST "https://business.pcific.ai/api/key-link" \
  -H "Content-Type: application/json" \
  -d '{"suggestedName":"My shop","destination":".env"}'

HTTP 409. The request is well formed, but it does not fit where the work is now.

Usual causes

  • The connection has no key to collect yet, or was already collected.

How to fix it

  • Read tryThis, poll until ready or start a new connection.
KEY_LINK_NOT_READY: a request that works
curl -X POST "https://business.pcific.ai/api/key-link" \
  -H "Content-Type: application/json" \
  -d '{"suggestedName":"My shop","destination":".env"}'

HTTP 500. Something failed on PCIFIC's side, not because of your request.

Usual causes

  • PCIFIC could not read the key stored for collection.

How to fix it

  • Start a new key connection.
KEY_LINK_UNREADABLE_KEY: a request that works
curl -X POST "https://business.pcific.ai/api/key-link" \
  -H "Content-Type: application/json" \
  -d '{"suggestedName":"My shop","destination":".env"}'