List the product catalog
Returns the usable products of the site catalog exactly as the Sorank
application shows them to the same user, with the catalog summary in
meta.catalog. Never starts discovery, enrichment or a refresh. A
profile without an analyzed site returns an empty list. The cursor is
bound to one catalog snapshot: after the catalog changes, a cursor
returns 409 product_catalog_cursor_stale and the list must restart
from the first page.
A valid request URL is required to generate request examples{
"data": [
{
"id": "44444444-4444-4444-8444-444444444444",
"name": "Night train pass",
"url": "https://acme.example/products/night-train-pass",
"description": "Unlimited night train travel for 30 days.",
"image_url": "https://acme.example/media/night-train-pass.jpg",
"verified": true,
"available": true,
"fetched_at": "2026-09-24T09:00:00+00:00"
}
],
"meta": {
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pagination": {
"limit": 50,
"has_more": true,
"next_cursor": "<string>"
},
"catalog": {
"available_count": 1,
"enriched_count": 1,
"truncated": true
}
}
}{
"error": {
"code": "insufficient_quota",
"message": "The current article generation quota is exhausted.",
"request_id": "33333333-3333-4333-8333-333333333333",
"retryable": false
}
}{
"error": {
"code": "insufficient_quota",
"message": "The current article generation quota is exhausted.",
"request_id": "33333333-3333-4333-8333-333333333333",
"retryable": false
}
}Authorizations
Authorization-code grant with PKCE S256, exact scopes, explicit resource audience and a persisted consent grant. Obtain endpoint URLs from server discovery in the target environment. Refresh tokens remain client-bound.
- Authorization URL
- /oauth/authorize
- Token URL
- /oauth/token
- Refresh URL
- /oauth/token
Path Parameters
Profile UUID; must be in the grant allowlist and currently accessible to the actor.
Query Parameters
Opaque cursor returned by the preceding page; do not construct it.
1Product page size; the catalog read is bounded at 50 products per page.
1 <= x <= 50A valid request URL is required to generate request examples{
"data": [
{
"id": "44444444-4444-4444-8444-444444444444",
"name": "Night train pass",
"url": "https://acme.example/products/night-train-pass",
"description": "Unlimited night train travel for 30 days.",
"image_url": "https://acme.example/media/night-train-pass.jpg",
"verified": true,
"available": true,
"fetched_at": "2026-09-24T09:00:00+00:00"
}
],
"meta": {
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pagination": {
"limit": 50,
"has_more": true,
"next_cursor": "<string>"
},
"catalog": {
"available_count": 1,
"enriched_count": 1,
"truncated": true
}
}
}{
"error": {
"code": "insufficient_quota",
"message": "The current article generation quota is exhausted.",
"request_id": "33333333-3333-4333-8333-333333333333",
"retryable": false
}
}{
"error": {
"code": "insufficient_quota",
"message": "The current article generation quota is exhausted.",
"request_id": "33333333-3333-4333-8333-333333333333",
"retryable": false
}
}
