Every error Safeguard can return, and every way a review can fail after it starts, with the mistakes integrations make most often first.
Most Safeguard error bodies have a docs link to their section on this page (or, for key, credit and limit errors, on the shared errors page). A review that fails after it was accepted shows status failed and the same error, with its docs link, when you read it back. What an error body holds is explained in Errors, limits and retries.
The ways integrations most often go wrong, written as what you see. Each one links to the errors it causes.
Safeguard reads your listing through your published listing fields. With none published, every review is 409 SAFEGUARD_NO_SCHEMA. The category must be sent (400 CATEGORY_REQUIRED) and be a category of your newest published version. Capitals do not matter, but the words do: "Mobile phones" for a category named Phones is 422 CATEGORY_NOT_FOUND. Categories in a draft you have not published are not found either.
Reviews need photos unless you send requirePhotos: false, so a listing with no images is 422 PHOTOS_REQUIRED. images takes the ids POST /api/v1/images gave you. A photo address or file name there is 400 INVALID_FIELD at /images/0. A photo id lasts 30 minutes, so an old id, or another business's, is 422 PHOTOS_NOT_FOUND: upload the photo again.
Answers are taken only once the review is done and has questions waiting. Sending them while it is still working is 409 REVIEW_NOT_READY: read the review until its status is done first. Each answer's id must be the id of a question in sellerQuestions (422 UNKNOWN_QUESTION), and a review with no open questions left is 409 NO_OPEN_QUESTIONS.
Reviews are kept for 30 minutes after their last change. Read the result and save what you need as soon as the status is done or failed. An older id, or one from another business or key kind, is 404 NOT_FOUND.
A field of the wrong type, outside its allowed values, or a price that cannot be read is 400 INVALID_LISTING, with one entry in problems for each field. Missing required fields are not refused: the review flags them instead.
A 202 means the review started. If it then fails, reading it shows status failed with an error such as SAFEGUARD_TIMED_OUT or SAFEGUARD_MODEL_FAILED. Retry it with POST .../retry rather than starting a new review, and do not show the seller a score from a failed review.
"review": false with neither "faq": true nor "rewrite": true leaves nothing to do: 400 NOTHING_TO_DO.
HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 403. PCIFIC knows who is calling, but this caller may not do this right now.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 409. The request is well formed, but it does not fit where the work is now.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 422. The body was read, but what it holds cannot be used.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 422. The body was read, but what it holds cannot be used.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 422. The body was read, but what it holds cannot be used.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 422. The body was read, but what it holds cannot be used.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 422. The body was read, but what it holds cannot be used.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 422. The body was read, but what it holds cannot be used.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 404. What the address points at does not exist for this key, or no longer exists.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 409. The request is well formed, but it does not fit where the work is now.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 500. Something failed on PCIFIC's side, not because of your request.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"category":"Phones","listing":{"title":"iPhone 13 128GB, good condition, works fine","description":"Selling my old phone. No box. Collection preferred.","brand":"Apple","model":"iPhone 13","storage_gb":128,"condition":"Good","price":{"amount":31500,"currency":"GBP"}},"images":[],"requirePhotos":false,"review":true,"faq":false}'HTTP 404. What the address points at does not exist for this key, or no longer exists.
curl -X GET "https://business.pcific.ai/api/v1/safeguard/reviews/$ID" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY"HTTP 409. The request is well formed, but it does not fit where the work is now.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$ID/answers" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"answers":[{"id":"q1","answer":"91%"},{"id":"q2","answer":"It is unlocked, works on any network"}]}'HTTP 409. The request is well formed, but it does not fit where the work is now.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$ID/answers" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"answers":[{"id":"q1","answer":"91%"},{"id":"q2","answer":"It is unlocked, works on any network"}]}'HTTP 409. The request is well formed, but it does not fit where the work is now.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$ID/answers" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"answers":[{"id":"q1","answer":"91%"},{"id":"q2","answer":"It is unlocked, works on any network"}]}'HTTP 422. The body was read, but what it holds cannot be used.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$ID/answers" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"answers":[{"id":"q1","answer":"91%"},{"id":"q2","answer":"It is unlocked, works on any network"}]}'HTTP 400. The request itself needs changing: a field, header, address or body is not in the form this address takes.
curl -X PUT "https://business.pcific.ai/api/v1/safeguard/settings" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"minimumScore":7,"verdicts":[{"name":"High risk","from":0,"meaning":"block"},{"name":"Caution","from":4,"meaning":"review"},{"name":"Looks good","from":7,"meaning":"pass"}],"categoryVerdictStarts":{"Phones":[0,5,8]}}'HTTP 503. PCIFIC, or a service it relies on, is too busy or not available right now.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$REVIEW_ID/retry" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)"HTTP 504. PCIFIC took longer to answer than the address allows.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$REVIEW_ID/retry" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)"HTTP 422. The body was read, but what it holds cannot be used.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$REVIEW_ID/retry" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)"HTTP 502. PCIFIC, or a service it relies on, could not answer.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$REVIEW_ID/retry" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)"HTTP 503. PCIFIC, or a service it relies on, is too busy or not available right now.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$REVIEW_ID/retry" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)"HTTP 502. PCIFIC, or a service it relies on, could not answer.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$REVIEW_ID/retry" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)"HTTP 500. Something failed on PCIFIC's side, not because of your request.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$REVIEW_ID/retry" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)"HTTP 500. Something failed on PCIFIC's side, not because of your request.
curl -X POST "https://business.pcific.ai/api/v1/safeguard/reviews/$REVIEW_ID/retry" \
-H "Authorization: Bearer $PCIFIC_TEST_KEY" \
-H "Idempotency-Key: $(uuidgen)"