{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown","redocly_category":"Guides","api_domain":"Cross API"},"seo":{"title":"Pagination strategies","description":"Pagination strategies for Sales Layer REST API list operations using $skip, $top, and $skipToken.","keywords":["Sales Layer","REST API","OpenAPI","DAM API","Catalog API","product catalog API","image management API","API integration"],"lang":"en-US","meta":[{"name":"og:type","content":"website"},{"name":"og:site_name","content":"Sales Layer REST API Documentation"},{"name":"og:title","content":"Sales Layer REST API Documentation"},{"name":"og:description","content":"Complete REST API documentation for Sales Layer's DAM and Catalog APIs. Learn authentication, pagination, filtering, and integration patterns."},{"name":"twitter:card","content":"summary_large_image"},{"name":"twitter:site","content":"@saleslayer"},{"name":"twitter:title","content":"Sales Layer REST API Documentation"},{"name":"twitter:description","content":"Complete REST API documentation for Sales Layer's DAM and Catalog APIs. Learn authentication, pagination, filtering, and integration patterns."}],"llmstxt":{"hide":false,"title":"Sales Layer REST API Documentation","description":"Technical guides and OpenAPI references for Sales Layer DAM and Catalog REST APIs.","sections":[{"title":"Guides","description":"Static API guides for authentication, headers, query parameters, responses, rate limiting, and best practices.","includeFiles":["guides/**/*.md","changelog.md"],"excludeFiles":[]},{"title":"API Reference","description":"OpenAPI-based references and API overview pages for Sales Layer REST APIs.","includeFiles":["apis/**/*.md","apis/**/*.yaml"],"excludeFiles":[]},{"title":"Postman collections","description":"Importable Postman collection and environment instructions for testing Sales Layer REST APIs.","includeFiles":["postman/**/*.md"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"pagination-strategies","__idx":0},"children":["Pagination strategies"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sales Layer APIs expose pagination parameters on list operations so clients can process large datasets in controlled batches."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The current OpenAPI specifications document:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["DAM list operations: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$top"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skip"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Catalog list operations: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$top"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skip"]},", and in selected endpoints ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skipToken"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"token-based-pagination","__idx":1},"children":["Token-based pagination"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Token-based pagination uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skipToken"]}," to continue reading from a position supplied by the API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When available, this strategy is recommended for large or frequently synchronized datasets because it avoids manually calculating offsets."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"GET https://api2.saleslayer.com/catalog/rest/Catalog/Products?$select=prod_ref,prod_title&$skipToken=TOKEN_VALUE\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@nextLink"]}," value from a response when the API provides one."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"limit-based-pagination","__idx":2},"children":["Limit-based pagination"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Limit-based pagination uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$top"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skip"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"GET https://api2.saleslayer.com/catalog/rest/Catalog/Products?$skip=0&$top=50\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"GET https://api2.saleslayer.com/dam/image?$skip=0&$top=50\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this strategy when the endpoint does not expose ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skipToken"]}," or when the integration needs explicit page offsets."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"choosing-a-strategy","__idx":3},"children":["Choosing a strategy"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Strategy"},"children":["Strategy"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Use when"},"children":["Use when"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skipToken"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The endpoint returns a continuation link and the integration processes large or changing datasets."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skip"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$top"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The endpoint supports offset-style pagination or the integration needs predictable fixed pages."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"recommendations","__idx":4},"children":["Recommendations"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Prefer continuation links when the API returns them."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use stable sorting when paginating with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skip"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$top"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Store progress so synchronization jobs can resume after a temporary failure."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Respect ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/rate-limiting"},"children":["rate limiting"]}," during long-running jobs."]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skipToken"]}," is not compatible with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$orderby"]},". When using token-based pagination, omit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$orderby"]}," from the request. Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skip"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$top"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$orderby"]}," when sorted pagination is required."]}]}]},"headings":[{"value":"Pagination strategies","id":"pagination-strategies","depth":1},{"value":"Token-based pagination","id":"token-based-pagination","depth":2},{"value":"Limit-based pagination","id":"limit-based-pagination","depth":2},{"value":"Choosing a strategy","id":"choosing-a-strategy","depth":2},{"value":"Recommendations","id":"recommendations","depth":2}],"frontmatter":{"seo":{"title":"Pagination strategies","description":"Pagination strategies for Sales Layer REST API list operations using $skip, $top, and $skipToken."},"keywords":{"includes":["pagination","$skip","$top","$skipToken"]},"metadata":{"redocly_category":"Guides","api_domain":"Cross API"}},"lastModified":"2026-06-04T20:25:57.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/pagination-strategies","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}