Tryon API technical errors (4xx codes)

This article documents the internal/technical error codes the Tryon API can return. These errors are different from the user-facing errors 1001–1008: they indicate problems at the integration or infrastructure level and are most useful for developers and store administrators troubleshooting an integration.

End customers will not normally see these messages — the widget catches them and shows a generic "Something went wrong" message. To diagnose, inspect the browser's network tab and look at the API response body to find the code field.

Looking for the user-facing errors?

For errors 1001–1008 (the numbered errors customers see), check the Tryon error code list.

Complete reference

HTTPCodeWhat it meansHow to resolve
401missing_license_keyThe API request did not include a license key in the headers.Verify the widget integration includes the license key in every request. If using the official Tryon widget, ensure your store PIN is correctly configured in the embed snippet.
404license_not_foundThe provided license key does not match any active store.Confirm the PIN/license key in your embed code matches the one shown in your dashboard. If the store was recently deleted or the subscription cancelled, the key will stop working.
400missing_customer_uuidThe request did not include a customer UUID identifying the visitor.Make sure your widget integration generates and sends a unique customer UUID for every session. The official widget handles this automatically.
400missing_customer_typeThe customer type (guest, registered, buyer) was not provided in the request.Check the widget configuration. The customer type must be one of: guest, registered, or buyer. Contact support if you cannot determine the correct value.
400invalid_customer_typeThe customer type sent in the request is not one of the accepted values.Accepted values are exactly: guest, registered, or buyer. Any other string (or different casing) will be rejected.
400missing_recaptcha_tokenThe reCAPTCHA token is required but was not included in the request.If your widget has reCAPTCHA enabled, make sure the recaptcha_site_key is configured and the token is being generated client-side before the request is made.
400missing_required_parametersOne or more required parameters are missing from the request body.Inspect the network request to identify which field is missing. Common culprits: product_id, customer_uuid, customer_type, or photo data. Contact support with the request payload if you cannot identify the issue.
400invalid_jsonThe request body could not be parsed as valid JSON.Usually a bug in custom integrations that build the request manually. Validate the JSON payload with a linter, or use the official widget which handles serialization automatically.
400invalid_feedbackThe submitted feedback payload contains invalid values (e.g. rating out of range).Feedback ratings must be valid values (typically 1 or -1 / positive or negative). Review your integration code that builds the feedback request.
404settings_not_foundThe store's settings could not be loaded.Open your dashboard and verify that the store exists and your subscription is active. If the issue persists, contact support — it may indicate a backend data issue.
404product_not_foundThe product_id sent in the request does not exist in this store.Verify the product exists in Dashboard → Products and is set to ACTIVE. If you imported products from an e-commerce platform, confirm the import finished successfully.
404job_not_foundThe generation job ID referenced in the request does not exist or has expired.Jobs are short-lived. If you are polling a job result, ensure you start a fresh generation rather than reusing an old job ID. Most often this means a stale browser tab — refreshing the widget should fix it.
404image_not_foundThe requested image (e.g. a previously generated photo) could not be located in storage.If the image was generated long ago, it may have been deleted from storage according to your retention policy. Generate a new photo to replace it.
409feedback_already_submittedThe customer has already submitted feedback for this generated photo.Each photo accepts only one feedback rating per customer. If the customer wants to change their rating, this is not currently supported — only the first submission is recorded.
403cors_origin_not_allowedThe request originated from a domain that is not on the store's allowed origins list.In Dashboard → E-commerce, add the domain where the widget is embedded to the allowed origins list. Subdomains and protocol must match exactly (https://shop.example.com is different from https://www.shop.example.com).
429rate_limitedToo many requests were sent in a short period of time from this client/IP.Wait a few seconds and try again. If you're integrating programmatically, add exponential backoff between retries. Persistent rate limiting from real user traffic may indicate abuse — contact support.
500internal_server_errorAn unexpected error occurred on Tryon's backend infrastructure.This is rarely caused by your integration. Retry the request after a few seconds. If the error persists, contact [email protected] with your store PIN and the approximate time of the error.

How to find the error code in a real request

  1. Open your browser's Developer Tools (F12 or Ctrl+Shift+I / Cmd+Opt+I).
  2. Go to the Network tab and reproduce the action that triggered the error.
  3. Click the failed request (red status) and open the Response tab.
  4. Look for a JSON field named code — that's the value matching the table above.

Need more help?

If none of the resolutions above fix the issue, contact [email protected] with: the error code, your store PIN, the time of the error, and (ideally) a screenshot of the network request response.