Skip to main content
Product refresh lets you update a known set of product pages without waiting for the standard catalog update cadence. Use it when your system already knows which products changed, such as a new drop, a merchandiser correction, or a small set of products that should be updated quickly. Refresh starts an asynchronous Octogen workflow. The API returns after the request is accepted, and product data becomes visible after refresh processing and indexing complete.

Choose identifiers

Use the identifier you already have:
You haveSend
An indexed Octogen productuuid
A canonical product page URLurl
A product page URL that may not be indexed yetcatalog and url
A URL that could appear in more than one granted catalogcatalog and url
Every target must contain exactly one of url or uuid. Add catalog when you want to pin the request to one granted catalog.

Make a request

curl -sS https://api.octogen.ai/v1/products/refresh \
  -H "Authorization: Bearer $OCTOGEN_PLATFORM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "targets": [
      {"uuid": "11111111-1111-4111-8111-111111111111"},
      {
        "catalog": "warrenlotas",
        "url": "https://warrenlotas.com/products/new-drop"
      }
    ]
  }'
The response includes a workflowId that Octogen support can use to trace the refresh. You do not need to poll it for normal use.

Handle partial success

The endpoint accepts valid targets and rejects invalid targets in the same response. Treat accepted as scheduled work and rejected as caller-actionable feedback.
{
  "requestId": "62cf3df6-30f2-4c0e-b13d-fc509bba8d4f",
  "submitted": 2,
  "workflowId": "4b4b68de-65f3-4f79-af57-a4a1d6ef4e13",
  "workflowError": null,
  "accepted": [
    {
      "catalog": "warrenlotas",
      "url": "https://warrenlotas.com/products/new-drop"
    }
  ],
  "rejected": [
    {
      "target": {"url": "https://shared.example/products/1"},
      "code": "ambiguous_url",
      "message": "URL matched more than one granted catalog; include catalog."
    }
  ]
}
If every target is rejected, the API returns 400 with the same response shape. Fix the rejected targets and retry.

Retry guidance

Retry 503 responses and transient network errors. Do not automatically retry 400, 403, or 422; those require a request change. Avoid sending the same large request repeatedly. If you need to refresh many products, batch up to 500 targets per call and retry only the targets that were rejected for transient reasons.