{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown","redocly_category":"Guides","api_domain":"Cross API"},"seo":{"title":"Recipes","description":"Practical implementation recipes for common Sales Layer REST API integration workflows.","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":"recipes","__idx":0},"children":["Recipes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use these recipes as starting points for common Sales Layer REST API workflows."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"read-only-the-catalog-fields-you-need","__idx":1},"children":["Read only the catalog fields you need"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$select"]}," to reduce payload size for catalog exports and synchronization jobs."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X GET 'https://api2.saleslayer.com/catalog/rest/Catalog/Products?$select=prod_ref,prod_title' \\\n  -H 'X-API-KEY: YOUR_API_KEY'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select only the fields required by the downstream system. This makes integrations faster and easier to troubleshoot."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Related pages:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/select"},"children":["Select"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/best-practices"},"children":["Best practices"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/catalog"},"children":["Catalog REST API overview"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"filter-before-processing","__idx":2},"children":["Filter before processing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$filter"]}," to narrow results before they reach your integration."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X GET 'https://api2.saleslayer.com/catalog/rest/Catalog/Products?$filter=contains(prod_title,%27shoe%27)' \\\n  -H 'X-API-KEY: YOUR_API_KEY'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Filtering at the API level is usually more efficient than retrieving a broad dataset and filtering it client-side."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Related pages:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/filter"},"children":["Filter"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/string-functions"},"children":["String functions"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/logical-operators"},"children":["Logical operators"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"synchronize-large-datasets","__idx":3},"children":["Synchronize large datasets"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For list operations, process results in pages and store progress between runs."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use token-based pagination with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skipToken"]}," when a Catalog endpoint supports it and returns continuation links. Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$top"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$skip"]}," for DAM and offset-style endpoints."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X GET 'https://api2.saleslayer.com/dam/image?$top=100&$skip=0' \\\n  -H 'X-API-KEY: YOUR_API_KEY'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Keep the page state, retry count, endpoint, status code, and request timing in integration logs."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Related pages:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/pagination-strategies"},"children":["Pagination strategies"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/page-size-limits"},"children":["Page size limits"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/rate-limiting"},"children":["Rate limiting"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"detect-catalog-changes","__idx":4},"children":["Detect catalog changes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use Catalog changelog endpoints when an integration needs to identify changes since a previous synchronization."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Recommended pattern:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Read the relevant changelog endpoint."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Store the last processed checkpoint in your integration."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fetch changed resources by identifier when the integration needs full records."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Apply bounded retries for temporary failures."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Related pages:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/catalog"},"children":["Catalog REST API overview"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/catalog-v2.0"},"children":["Catalog endpoint reference"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/best-practices"},"children":["Best practices"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"handle-failures-consistently","__idx":5},"children":["Handle failures consistently"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use status codes to decide whether to fix the request, retry later, or escalate the issue."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"400, 401, 403, 404: review request, credentials, permissions, or identifiers.\n409: retry only when the conflict is expected to be temporary.\n500: use bounded retries with backoff.\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Related pages:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/error-responses"},"children":["Error responses"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/rate-limiting"},"children":["Rate limiting"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/feedback-privacy"},"children":["Feedback and privacy"]}]}]}]},"headings":[{"value":"Recipes","id":"recipes","depth":1},{"value":"Read only the catalog fields you need","id":"read-only-the-catalog-fields-you-need","depth":2},{"value":"Filter before processing","id":"filter-before-processing","depth":2},{"value":"Synchronize large datasets","id":"synchronize-large-datasets","depth":2},{"value":"Detect catalog changes","id":"detect-catalog-changes","depth":2},{"value":"Handle failures consistently","id":"handle-failures-consistently","depth":2}],"frontmatter":{"seo":{"title":"Recipes","description":"Practical implementation recipes for common Sales Layer REST API integration workflows."},"keywords":{"includes":["recipes","use cases","synchronization","changelog","DAM","Catalog"]},"metadata":{"redocly_category":"Guides","api_domain":"Cross API"}},"lastModified":"2026-06-04T20:25:57.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/recipes","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}