Three guarantees the SDK depends on

Deliberate deviation: pagination

Storyblok defaults to per_page=25. OSSTBlok returns all rows when per_page is missing, capped at 10000. The per-page and x-total response headers are always set so the SDK iterates correctly either way. Pass per_page explicitly if you want Storyblok's behaviour.

resolve_relations overflow

When more than 50 unique relations resolve, the response switches rels → [] and returns rel_uuids: [<uuids>] instead. Clients fetch the full referenced stories in a follow-up call (cdn/stories?by_uuids=...). Identical behaviour to Storyblok — SDKs handle it automatically.

json
{
  "stories": [...],
  "cv": 1714140000,
  "rels": [],
  "rel_uuids": [
    "c3c7e0f3-...",
    "b8df1c82-...",
    "e71a..."
  ],
  "links": {}
}
cdn/stories with rel_uuids overflow.