PixelTrace errors

Every error PixelTrace can return, what causes it and how to fix it, starting with the mistakes integrations make most often.

Most PixelTrace error bodies have a docs link to their section on this page (or, for key, credit and limit errors, on the shared errors page). 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 test photos keep getting rejected

POST .../test-photos takes one JPEG, PNG or WebP as the raw request body with Content-Type image/jpeg, image/png or image/webp, like curl --data-binary @photo.png. HEIC, a multipart form (curl -F), JSON or base64 text is refused with 415 PIXEL_TRACE_CONTENT_TYPE. An empty body is 400 PIXEL_TRACE_NO_PHOTO. A photo outside 640 to 4096 pixels on its longest side, such as a thumbnail, is 422 PIXEL_TRACE_PHOTO_REFUSED, and one over 8 MB is 413 PIXEL_TRACE_TOO_LARGE.

The seller's camera photo is not a JPEG

The phone camera upload returns 422 PIXEL_TRACE_NOT_JPEG if the photo is not a JPEG. Ask the seller to take it again with the camera page's shutter button. Test photo uploads also accept PNG and WebP.

It works with my test key but not live

Test photo uploads and test confirmation exist only for test keys: a live key gets 403 PIXEL_TRACE_TEST_KEY_ONLY, because a live group's photos must come from the seller's phone. Send the seller the cameraUrl instead. A group started with one kind of key is not found (404 NOT_FOUND) with the other kind, and a live key may read settings but never change them (403 KEY_NOT_ALLOWED).

Publishing fails straight after I start a group

A group can be published only once the seller has confirmed it. Until GET /api/v1/pixel-trace/captures/{captureId} shows status ready, POST .../complete answers 409 PIXEL_TRACE_NOT_CONFIRMED. Poll the group every few seconds, or wait for the pixeltrace.capture_ready webhook.

The camera addresses refuse my server

Everything under /api/v1/pixel-trace/camera answers only the seller's phone browser that opened the camera link. Your API key on its own gets 409 PIXEL_TRACE_CAMERA_NOT_OPENED. From your server, read the group with GET /api/v1/pixel-trace/captures/{captureId}, and with a test key add photos with .../test-photos and confirm with .../test-confirm.

The seller says the link is already open somewhere else

A camera link works in one browser. Opening it inside a chat app and then in Safari or Chrome gives 409 PIXEL_TRACE_LINK_ALREADY_OPENED in the second browser. The seller types the six characters shown under "Switch phone" in the first browser to carry on. A laptop or desktop browser gets 403 PIXEL_TRACE_PHONE_ONLY.

My camera link stopped working

A link waits openWithinMinutes (15 by default) to be opened, then gives the seller captureMinutes (30 by default). After that, or once the seller confirmed or you retracted the group, the camera answers 410 PIXEL_TRACE_CAPTURE_CLOSED. Start a new group for a new link, or raise openWithinMinutes in the settings for links sellers open later.

My photo check is refused before the photo is read

POST /api/v1/pixel-trace/check takes the photo's bytes with Content-Type image/jpeg, image/png or image/webp. Sending JSON, a form or no Content-Type gives 415 PIXEL_TRACE_CONTENT_TYPE.

I started two groups when I retried

Each POST /api/v1/pixel-trace/captures without an Idempotency-Key starts a new group, and a live group is charged each time. Send the same Idempotency-Key and the same body when you retry after a lost answer, and you get the first group back. The same key with a different body is 422 IDEMPOTENCY_KEY_REUSED.

My tests stopped being able to start groups

A business holds at most 50 test groups and 200 test photos that are not retracted. Past that, 409 PIXEL_TRACE_TEST_GROUPS_FULL or PIXEL_TRACE_TEST_PHOTOS_FULL. Retract test groups at the end of each test run with POST .../retract. They are also deleted 24 hours after they start.

I sent modelTier and the group was refused

PixelTrace has one speed. modelTier: ultra-fast is 400 MODEL_TIER_NOT_SUPPORTED. Leave modelTier out.

PIXEL_TRACE_TURNED_OFF

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

Usual causes

  • PixelTrace is switched off for this account (enabled is false). Groups already started carry on.

How to fix it

  • Switch it on in the dashboard, or with a test key that has the settings permission send {"enabled": true} to PUT /api/v1/pixel-trace/settings.
PIXEL_TRACE_TURNED_OFF: 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"}'

PIXEL_TRACE_TOO_MANY_REQUESTS

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

  • More than 600 group starts and checks a minute for this account. (POST /api/v1/pixel-trace/captures, POST /api/v1/pixel-trace/check)
  • More than 40 uploads a minute in this group. (POST /api/v1/pixel-trace/captures/{captureId}/test-photos, POST /api/v1/pixel-trace/camera/{captureId}/photos)
  • More than 120 certificate reads a minute from this network. (GET /api/v1/pixel-trace/certificates/{code})
  • More than 600 badges a minute from this network. (GET /api/v1/pixel-trace/certificates/{code}/badge.svg)
  • More than public camera link checks from this network. (POST /api/v1/pixel-trace/camera/{captureId}/link)
  • More than 20 links opened a minute from this network. (POST /api/v1/pixel-trace/camera/{captureId}/open, POST /api/v1/pixel-trace/camera/{captureId}/move)
  • More than 240 camera calls a minute from this network. (GET /api/v1/pixel-trace/camera/{captureId}, POST /api/v1/pixel-trace/camera/{captureId}/shots, POST /api/v1/pixel-trace/camera/{captureId}/photos and 3 more)
  • More than 40 shutter presses a minute in this group. (POST /api/v1/pixel-trace/camera/{captureId}/shots)

How to fix it

  • Wait the number of seconds tryThis names (it is also in the Retry-After header), then send the request again.
PIXEL_TRACE_TOO_MANY_REQUESTS: 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_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. (POST /api/v1/pixel-trace/captures, POST /api/v1/pixel-trace/captures/{captureId}/complete, PUT /api/v1/pixel-trace/settings)
  • The camera page sent something that is not a JSON object. (POST /api/v1/pixel-trace/camera/{captureId}/open, POST /api/v1/pixel-trace/camera/{captureId}/move)

How to fix it

  • Send a JSON object with the header "Content-Type: application/json".
  • Reload the camera page. If it keeps happening, ask the shop for a new link.
INVALID_JSON: 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"}'

PIXEL_TRACE_LISTING_ID_INVALID

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

Usual causes

  • listingId is missing, empty, not text, or longer than 120 characters.

How to fix it

  • Send your own id for the listing these photos are for, for example "listingId": "listing-123".
PIXEL_TRACE_LISTING_ID_INVALID: 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"}'

MODEL_TIER_NOT_SUPPORTED

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

Usual causes

  • PixelTrace does not offer Ultra Fast at /modelTier.

How to fix it

  • Remove modelTier to create a photo group at the Standard price shown on the Credits page.
MODEL_TIER_NOT_SUPPORTED: 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"}'

PIXEL_TRACE_TEST_GROUPS_FULL

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

Usual causes

  • A test key was used, and the business already has 50 test groups that are not retracted.

How to fix it

  • Retract test groups you no longer need with POST /api/v1/pixel-trace/captures/{id}/retract. Test groups are also deleted 24 hours after they start.
PIXEL_TRACE_TEST_GROUPS_FULL: 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"}'

BODY_TOO_LARGE

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

Usual causes

  • The body is over 16 KB. (POST /api/v1/pixel-trace/captures, POST /api/v1/pixel-trace/captures/{captureId}/test-confirm, POST /api/v1/pixel-trace/captures/{captureId}/complete and 6 more)
  • The body is over 8 MB. (POST /api/v1/pixel-trace/captures/{captureId}/test-photos)
  • The body is over 15 MB. (POST /api/v1/pixel-trace/check)
  • The body is over 8 MB and 192 KB. (POST /api/v1/pixel-trace/camera/{captureId}/photos)

How to fix it

  • Send 16 KB or less in one request.
  • Send 8 MB or less in one request.
  • Send 15 MB or less in one request.
  • Send 8 MB and 192 KB or less in one request.
BODY_TOO_LARGE: 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"}'

NOT_FOUND

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

Usual causes

  • No group with this id in this shop for your kind of key (a test key reaches only test groups, a live key only live groups), the id is not a UUID, or the group expired and was deleted (its camera link ran out before the seller confirmed, or it was not published within a day of confirming). (GET /api/v1/pixel-trace/captures/{captureId}, POST /api/v1/pixel-trace/captures/{captureId}/test-photos, POST /api/v1/pixel-trace/captures/{captureId}/test-confirm and 2 more)
  • No published or retracted group has this code. (GET /api/v1/pixel-trace/certificates/{code})
  • No published or retracted group has this code, so it has no badge. (GET /api/v1/pixel-trace/certificates/{code}/badge.svg)
  • This camera link does not exist, or has expired. (POST /api/v1/pixel-trace/camera/{captureId}/link, GET /api/v1/pixel-trace/camera/{captureId}, POST /api/v1/pixel-trace/camera/{captureId}/shots and 4 more)
  • No group with this id, it expired and was deleted, or the ticket is wrong. (POST /api/v1/pixel-trace/camera/{captureId}/open, POST /api/v1/pixel-trace/camera/{captureId}/move)
  • The photo is not in this group, or was already deleted. (DELETE /api/v1/pixel-trace/camera/{captureId}/photos/{photoId})

How to fix it

  • Check the id from POST /api/v1/pixel-trace/captures and use the same kind of key that started it. If the group was deleted, start a new one.
  • Check the code, for example PCF-IMG-ABCDEF-234567. A group shows here only once the shop has published it.
  • Check the code in the badge address. A badge shows only once the shop has published the group.
  • Ask your shop for a new camera link, then open the whole link they send you.
  • Reload the camera page to see the photos saved.
NOT_FOUND: a request that works
curl -X GET "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

PIXEL_TRACE_TEST_KEY_ONLY

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

Usual causes

  • The call was made with a live key. Only a test key may add photos to a group or confirm it without the seller's phone.

How to fix it

  • Use a test key to test your integration. For a live group, send the seller the cameraUrl so they take the photos on their phone.
PIXEL_TRACE_TEST_KEY_ONLY: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_CAPTURE_CLOSED

HTTP 410. What the address points at existed, but has closed for good.

Usual causes

  • The test group is already confirmed, was retracted, or its camera link expired (openWithinMinutes after it started). (POST /api/v1/pixel-trace/captures/{captureId}/test-photos, POST /api/v1/pixel-trace/captures/{captureId}/test-confirm)
  • The camera link expired, the group was cancelled or retracted, or the seller already confirmed the group. (POST /api/v1/pixel-trace/camera/{captureId}/open, POST /api/v1/pixel-trace/camera/{captureId}/move, GET /api/v1/pixel-trace/camera/{captureId} and 5 more)

How to fix it

  • Start a new group with POST /api/v1/pixel-trace/captures and upload its photos within openWithinMinutes of starting it.
  • Ask the shop for a new link. If the photos were already confirmed, go back to the shop to finish the listing.
PIXEL_TRACE_CAPTURE_CLOSED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_CONTENT_TYPE

HTTP 415. The Content-Type header names a format this address does not take.

Usual causes

  • The test photo Content-Type or body is not JPEG, PNG or WebP. (POST /api/v1/pixel-trace/captures/{captureId}/test-photos)
  • The Content-Type header for the check is missing or is not a supported image type. (POST /api/v1/pixel-trace/check)

How to fix it

  • Send one JPEG, PNG or WebP photo as the request body with Content-Type image/jpeg, image/png or image/webp. Convert HEIC to JPEG first.
  • Send a JPEG, PNG or WebP photo with Content-Type: image/jpeg, image/png or image/webp, and the photo's bytes as the request body.
PIXEL_TRACE_CONTENT_TYPE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_NO_PHOTO

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 is empty.

How to fix it

  • Send the photo's bytes as the request body with "Content-Type: image/jpeg", for example curl --data-binary @photo.jpg.
PIXEL_TRACE_NO_PHOTO: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_PHOTO_REFUSED

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

Usual causes

  • The photo is damaged, outside 640 to 4096 pixels on its longest side, over the pixel limit (60 megapixels for JPEG, 25 for PNG and WebP), or uses an unsupported colour format. The message says which. (POST /api/v1/pixel-trace/captures/{captureId}/test-photos, POST /api/v1/pixel-trace/camera/{captureId}/photos)
  • The file is not a JPEG, PNG or WebP (HEIC is not accepted), is damaged or cut short, has fewer than 640 pixels on its longest side, is a JPEG over 60 megapixels, is a PNG or WebP over 25 megapixels, or is a CMYK or 16-bit JPEG. The message says which. (POST /api/v1/pixel-trace/check)

How to fix it

  • Read the message, then resize or re-save the photo as an ordinary JPEG and send it again.
  • Read the message, then send the photo as a JPEG, PNG or WebP within the size limits. A HEIC photo from an iPhone needs converting to JPEG first.
PIXEL_TRACE_PHOTO_REFUSED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_TOO_LARGE

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

Usual causes

  • The photo is over 8 MB. (POST /api/v1/pixel-trace/captures/{captureId}/test-photos)
  • The photo is over the 15 MB limit for a PixelTrace check. (POST /api/v1/pixel-trace/check)
  • The photo is over 8 MB, or its details are over 128 KB. (POST /api/v1/pixel-trace/camera/{captureId}/photos)

How to fix it

  • Send a smaller JPEG, PNG or WebP, 640 to 4096 pixels on its longest side and 8 MB or less.
  • Send one photo of 15 MB or less. Resize it or save it at a lower quality, then send it again.
  • Reload the camera page and take the photo again.
PIXEL_TRACE_TOO_LARGE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_GROUP_FULL

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

Usual causes

  • The group already holds 12 photos.

How to fix it

  • Confirm the group with POST /api/v1/pixel-trace/captures/{id}/test-confirm, or start a new one.
PIXEL_TRACE_GROUP_FULL: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_TEST_PHOTOS_FULL

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

Usual causes

  • The business already holds 200 test photos in its test groups that are not retracted, from uploads and phones together.

How to fix it

  • Test photos are deleted 24 hours after their group starts. Retract a test group you no longer need with POST /api/v1/pixel-trace/captures/{id}/retract, or try again later.
PIXEL_TRACE_TEST_PHOTOS_FULL: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_STORAGE_FAILED

HTTP 502. PCIFIC, or a service it relies on, could not answer.

Usual causes

  • The photo could not be saved. This is a problem on PCIFIC's side.

How to fix it

  • Send the photo again in a moment. If it keeps happening, contact PCIFIC support.
PIXEL_TRACE_STORAGE_FAILED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_PHOTO_FAILED

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

Usual causes

  • Reading the photo failed on PCIFIC's side, not because of the photo.

How to fix it

  • Send the photo again. If it keeps happening, contact PCIFIC support.
PIXEL_TRACE_PHOTO_FAILED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-photos" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

PIXEL_TRACE_CONFIRM_INVALID

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 JSON, or photoIds is not a list of photo ids. (POST /api/v1/pixel-trace/captures/{captureId}/test-confirm)
  • photoIds is missing, or holds something that is not a UUID. (POST /api/v1/pixel-trace/camera/{captureId}/confirm)

How to fix it

  • Send {"photoIds": [...]} with every photo id from GET /api/v1/pixel-trace/captures/{id}, or send no body to keep the upload order.
  • Reload the camera page and tap confirm again.
PIXEL_TRACE_CONFIRM_INVALID: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-confirm" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

PIXEL_TRACE_PHOTOS_CHANGED

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

Usual causes

  • photoIds does not list every photo in the group exactly once. (POST /api/v1/pixel-trace/captures/{captureId}/test-confirm)
  • photoIds is not exactly the photos saved in the group, each once. (POST /api/v1/pixel-trace/camera/{captureId}/confirm)

How to fix it

  • Read GET /api/v1/pixel-trace/captures/{id} and send each of its photos' ids once, or leave photoIds out to keep the upload order.
  • Reload the camera page, check your photos and confirm again.
PIXEL_TRACE_PHOTOS_CHANGED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-confirm" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

PIXEL_TRACE_TOO_FEW_PHOTOS

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

Usual causes

  • The group has fewer photos than the shop's minPhotos setting.

How to fix it

  • Upload more photos with POST /api/v1/pixel-trace/captures/{id}/test-photos, then confirm.
PIXEL_TRACE_TOO_FEW_PHOTOS: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-confirm" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

PIXEL_TRACE_SIGNING_KEY_UNAVAILABLE

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

Usual causes

  • The PixelTrace signing key on this server is no longer available.

How to fix it

  • Your photos are still saved. Wait a minute and confirm again. If this keeps happening, contact PCIFIC support.
PIXEL_TRACE_SIGNING_KEY_UNAVAILABLE: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/test-confirm" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

PIXEL_TRACE_LISTING_URL_INVALID

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

Usual causes

  • listingUrl is not a full https:// address (http:// only with a test key), or is over 2,000 characters.

How to fix it

  • Send the listing page's address as buyers see it, starting https://, or leave listingUrl out.
PIXEL_TRACE_LISTING_URL_INVALID: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/complete" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"marketplaceName":"Bramble","listingUrl":"https://bramble.example/listing-123"}'

PIXEL_TRACE_NOT_CONFIRMED

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

Usual causes

  • The seller has not confirmed the group yet (status capturing), so it cannot be published.

How to fix it

  • Wait until GET /api/v1/pixel-trace/captures/{id} shows status ready, then publish it.
PIXEL_TRACE_NOT_CONFIRMED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/complete" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"marketplaceName":"Bramble","listingUrl":"https://bramble.example/listing-123"}'

PIXEL_TRACE_RETRACTED

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

Usual causes

  • The group was retracted, so it cannot be published.

How to fix it

  • Start a new group with POST /api/v1/pixel-trace/captures.
PIXEL_TRACE_RETRACTED: a request that works
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID/complete" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"marketplaceName":"Bramble","listingUrl":"https://bramble.example/listing-123"}'

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 setting has the wrong type or is out of range, or "mode" was sent with anything but "isolated". The message names it.

How to fix it

  • Send the setting in the form the message shows. Remove "mode": there is nothing to switch on.
INVALID_SETTING: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/pixel-trace/settings" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"minPhotos":3,"keepPhotos":false,"publicLevels":["same_photo","likely_same"]}'

PIXEL_TRACE_PREFIX_RESERVED

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

Usual causes

  • codePrefix is kept for a brand, or for PCIFIC.

How to fix it

  • Choose different letters, for example this business's initials.
PIXEL_TRACE_PREFIX_RESERVED: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/pixel-trace/settings" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"minPhotos":3,"keepPhotos":false,"publicLevels":["same_photo","likely_same"]}'

PIXEL_TRACE_PREFIX_TAKEN

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

Usual causes

  • codePrefix is used, or was used, by another business.

How to fix it

  • Choose different letters.
PIXEL_TRACE_PREFIX_TAKEN: a request that works
curl -X PUT "https://business.pcific.ai/api/v1/pixel-trace/settings" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"minPhotos":3,"keepPhotos":false,"publicLevels":["same_photo","likely_same"]}'

PIXEL_TRACE_PHONE_ONLY

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

Usual causes

  • The browser is not on a phone or tablet.

How to fix it

  • Scan the QR code with your phone's camera, or open the link on your phone.
PIXEL_TRACE_PHONE_ONLY: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/open" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"ticket":"5f2c9a7e1b3d4f60a8c2e9b17d4f3a06c5e8b2d19f7a4c3e6b0d8f2a1c5e9b74","deviceKey":{"kty":"EC","crv":"P-256","x":"SLx0dCHYmUdNWdy4flZsfZlnmYs2l-nSWh3xEUq7P6E","y":"vms7zqG76VKqxnHJ4txj8B001SA89SUJuwFNmHIA65o"},"device":{"touchPoints":5,"coarsePointer":true,"screen":[390,844,3],"motion":"granted"}}'

PIXEL_TRACE_DEVICE_KEY_INVALID

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

Usual causes

  • The browser could not make its security key (deviceKey is not a P-256 public key), for example in a private window.

How to fix it

  • Open the link in Safari on iPhone or Chrome on Android, and make sure it is not a private window.
PIXEL_TRACE_DEVICE_KEY_INVALID: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/open" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"ticket":"5f2c9a7e1b3d4f60a8c2e9b17d4f3a06c5e8b2d19f7a4c3e6b0d8f2a1c5e9b74","deviceKey":{"kty":"EC","crv":"P-256","x":"SLx0dCHYmUdNWdy4flZsfZlnmYs2l-nSWh3xEUq7P6E","y":"vms7zqG76VKqxnHJ4txj8B001SA89SUJuwFNmHIA65o"},"device":{"touchPoints":5,"coarsePointer":true,"screen":[390,844,3],"motion":"granted"}}'

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

Usual causes

  • Another browser already opened this link, and it works only there.

How to fix it

  • To carry on here, type the six characters shown under "Switch phone" on the page where you first opened it (POST .../move). If that was not you, ask the shop for a new link.
PIXEL_TRACE_LINK_ALREADY_OPENED: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/open" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"ticket":"5f2c9a7e1b3d4f60a8c2e9b17d4f3a06c5e8b2d19f7a4c3e6b0d8f2a1c5e9b74","deviceKey":{"kty":"EC","crv":"P-256","x":"SLx0dCHYmUdNWdy4flZsfZlnmYs2l-nSWh3xEUq7P6E","y":"vms7zqG76VKqxnHJ4txj8B001SA89SUJuwFNmHIA65o"},"device":{"touchPoints":5,"coarsePointer":true,"screen":[390,844,3],"motion":"granted"}}'

PIXEL_TRACE_MOVE_CODE_WRONG

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

Usual causes

  • moveCode is not the code shown on the camera page where the link was first opened.

How to fix it

  • Check the six characters under "Switch phone" on that page, and type them again.
PIXEL_TRACE_MOVE_CODE_WRONG: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/move" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"ticket":"5f2c9a7e1b3d4f60a8c2e9b17d4f3a06c5e8b2d19f7a4c3e6b0d8f2a1c5e9b74","deviceKey":{"kty":"EC","crv":"P-256","x":"SLx0dCHYmUdNWdy4flZsfZlnmYs2l-nSWh3xEUq7P6E","y":"vms7zqG76VKqxnHJ4txj8B001SA89SUJuwFNmHIA65o"},"device":{"touchPoints":5,"coarsePointer":true,"screen":[390,844,3],"motion":"granted"},"moveCode":"K7P2QM"}'

PIXEL_TRACE_MOVE_LOCKED

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

Usual causes

  • Ten wrong move codes were typed for this camera link. Switching phones is locked for 15 minutes.

How to fix it

  • Try the code shown under "Switch phone" on the first phone again at the UTC time given in the response. You can keep taking photos on that phone while you wait.
PIXEL_TRACE_MOVE_LOCKED: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/move" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"ticket":"5f2c9a7e1b3d4f60a8c2e9b17d4f3a06c5e8b2d19f7a4c3e6b0d8f2a1c5e9b74","deviceKey":{"kty":"EC","crv":"P-256","x":"SLx0dCHYmUdNWdy4flZsfZlnmYs2l-nSWh3xEUq7P6E","y":"vms7zqG76VKqxnHJ4txj8B001SA89SUJuwFNmHIA65o"},"device":{"touchPoints":5,"coarsePointer":true,"screen":[390,844,3],"motion":"granted"},"moveCode":"K7P2QM"}'

PIXEL_TRACE_CAMERA_NOT_OPENED

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

Usual causes

  • No camera cookie, or not the cookie of the phone that opened this link, or the seller already confirmed the group (the cookie is deleted then). The camera routes answer only the seller's phone browser that opened the camera link, never an API key on its own.

How to fix it

  • Open the camera link again on the phone you are taking photos on. If you finished, your photos are saved: go back to the shop. From your own server, read the group with GET /api/v1/pixel-trace/captures/{captureId}, and with a test key add photos with POST .../test-photos and confirm with POST .../test-confirm.
PIXEL_TRACE_CAMERA_NOT_OPENED: a request that works
curl "https://business.pcific.ai/api/v1/pixel-trace/captures/$CAPTURE_ID" \
  -H "Authorization: Bearer $PCIFIC_TEST_KEY"

PIXEL_TRACE_SHOT_INVALID

HTTP 400 or 403. The request itself needs changing: a field, header, address or body is not in the form this address takes. PCIFIC knows who is calling, but this caller may not do this right now.

Usual causes

  • The shutter press was sent without its id or signature (or the x-pixel-trace-shot header is missing or not a UUID). (POST /api/v1/pixel-trace/camera/{captureId}/shots, POST /api/v1/pixel-trace/camera/{captureId}/photos)
  • No unused shutter press in this group has this shot id and shot code. (POST /api/v1/pixel-trace/camera/{captureId}/photos)

How to fix it

  • Reload the camera page and take the photo again.
  • Take the photo with the camera page's shutter button.
PIXEL_TRACE_SHOT_INVALID: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/shots" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"shotId":"3f8b2c1d-9e4a-4b7f-8c6d-2a1e5f9b0c73","signature":"PcK-Aqo3XWeVW-QmdChdkeJIzWuFWIG14tYHVdWuZSW6rBDPO_uoWsDO3ioiYooK0VzLJHvAZ8wPkCuO4FV45Q"}'

PIXEL_TRACE_SIGNATURE_INVALID

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

Usual causes

  • The signature was not made by the key of the phone the link is bound to.

How to fix it

  • Reload the camera page and try again. If it keeps happening, open the camera link again on the phone you started on.
PIXEL_TRACE_SIGNATURE_INVALID: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/shots" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"shotId":"3f8b2c1d-9e4a-4b7f-8c6d-2a1e5f9b0c73","signature":"PcK-Aqo3XWeVW-QmdChdkeJIzWuFWIG14tYHVdWuZSW6rBDPO_uoWsDO3ioiYooK0VzLJHvAZ8wPkCuO4FV45Q"}'

PIXEL_TRACE_STILL_SENDING

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

Usual causes

  • Three other photos are still on their way to PixelTrace.

How to fix it

  • Wait a moment for them to finish sending, then take the next photo.
PIXEL_TRACE_STILL_SENDING: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/shots" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"shotId":"3f8b2c1d-9e4a-4b7f-8c6d-2a1e5f9b0c73","signature":"PcK-Aqo3XWeVW-QmdChdkeJIzWuFWIG14tYHVdWuZSW6rBDPO_uoWsDO3ioiYooK0VzLJHvAZ8wPkCuO4FV45Q"}'

PIXEL_TRACE_SHOT_USED

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

Usual causes

  • This shutter press was already used for a photo.

How to fix it

  • Take the photo again. If the answer to a photo was lost, send the same photo again to get the saved one.
PIXEL_TRACE_SHOT_USED: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/shots" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"shotId":"3f8b2c1d-9e4a-4b7f-8c6d-2a1e5f9b0c73","signature":"PcK-Aqo3XWeVW-QmdChdkeJIzWuFWIG14tYHVdWuZSW6rBDPO_uoWsDO3ioiYooK0VzLJHvAZ8wPkCuO4FV45Q"}'

PIXEL_TRACE_SHOT_EXPIRED

HTTP 410. What the address points at existed, but has closed for good.

Usual causes

  • The photo arrived more than 60 seconds after the shutter was pressed.

How to fix it

  • Take the photo again. If your signal is weak, move somewhere with better signal.
PIXEL_TRACE_SHOT_EXPIRED: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/photos" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "x-pixel-trace-shot: $PIXEL_TRACE_SHOT" \
  -H "x-pixel-trace-shot-code: $PIXEL_TRACE_SHOT_CODE" \
  -H "x-pixel-trace-signature: $PIXEL_TRACE_SIGNATURE" \
  -F "photo=@photo.jpg;type=image/jpeg" \
  -F "evidence=<evidence.json"

PIXEL_TRACE_UPLOAD_CUT_SHORT

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

Usual causes

  • The photo upload was cut short, so the form could not be read to the end.

How to fix it

  • Check your phone's signal and tap Retry.
PIXEL_TRACE_UPLOAD_CUT_SHORT: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/photos" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "x-pixel-trace-shot: $PIXEL_TRACE_SHOT" \
  -H "x-pixel-trace-shot-code: $PIXEL_TRACE_SHOT_CODE" \
  -H "x-pixel-trace-signature: $PIXEL_TRACE_SIGNATURE" \
  -F "photo=@photo.jpg;type=image/jpeg" \
  -F "evidence=<evidence.json"

PIXEL_TRACE_UPLOAD_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 upload is missing the photo or its details.

How to fix it

  • Reload the camera page and take the photo again.
PIXEL_TRACE_UPLOAD_INCOMPLETE: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/photos" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "x-pixel-trace-shot: $PIXEL_TRACE_SHOT" \
  -H "x-pixel-trace-shot-code: $PIXEL_TRACE_SHOT_CODE" \
  -H "x-pixel-trace-signature: $PIXEL_TRACE_SIGNATURE" \
  -F "photo=@photo.jpg;type=image/jpeg" \
  -F "evidence=<evidence.json"

PIXEL_TRACE_EVIDENCE_INVALID

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

Usual causes

  • The camera page sent the photo's details in a form PixelTrace cannot read (not JSON, or too many live copies, frame times or motion readings).

How to fix it

  • Reload the camera page and take the photo again.
PIXEL_TRACE_EVIDENCE_INVALID: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/photos" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "x-pixel-trace-shot: $PIXEL_TRACE_SHOT" \
  -H "x-pixel-trace-shot-code: $PIXEL_TRACE_SHOT_CODE" \
  -H "x-pixel-trace-signature: $PIXEL_TRACE_SIGNATURE" \
  -F "photo=@photo.jpg;type=image/jpeg" \
  -F "evidence=<evidence.json"

PIXEL_TRACE_NOT_JPEG

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

Usual causes

  • The photo is not a JPEG, which is what the camera page makes.

How to fix it

  • Take the photo with the camera page's shutter button.
PIXEL_TRACE_NOT_JPEG: a request that works
# Sent by PCIFIC's camera page on the seller's phone, not by your server.
curl -X POST "https://business.pcific.ai/api/v1/pixel-trace/camera/$CAPTURE_ID/photos" \
  -H "Cookie: pixel_trace_camera=$CAMERA_COOKIE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "x-pixel-trace-shot: $PIXEL_TRACE_SHOT" \
  -H "x-pixel-trace-shot-code: $PIXEL_TRACE_SHOT_CODE" \
  -H "x-pixel-trace-signature: $PIXEL_TRACE_SIGNATURE" \
  -F "photo=@photo.jpg;type=image/jpeg" \
  -F "evidence=<evidence.json"