{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"68298413-dc8a-4c61-b41e-a0721d2a4fd0","name":"Singular REST API","description":"## Singular API v2 Postman Collection\n\nUpdated: Sep.2025\n\nThis is a Postman collection covering the Singular REST API v2 for App Instances. See [https://developer.singular.live/rest-api](https://developer.singular.live/rest-api/introduction) for more details.\n\nIf you plan to integrate Singular into your platform, implement automated workflows, \\[let us know\\]([https://mailto:support@singular.live?subject=Singular](https://mailto:support@singular.live?subject=Singular) Integration)!\n\nWe provide an extended REST API colection and additional integration modules for Singular partners.\n\n- Want to learn more about the Singular Partner Program? Click [here](https://www.singular.live/company/partner-program)!\n    \n- Want to join the Singular Partner Program? Click [here](https://www.singular.live/company/partner-program#join)!\n    \n\n## Prerequisites\n\n- [Postman](https://www.postman.com/downloads/)\n    \n- [Singular Account](https://app.singular.live/users/signup)\n    \n\n## Getting Started\n\nTo get started download the collection via the [collection JSON link](https://www.getpostman.com/collections/d5c257099e3ee9c82f06) or fork the collection by clicking the [<i>Run in Postman</i>](https://www.getpostman.com/docs/run_button_ux) button present at the top of the documentation page.\n\nAlso visit the [Singular Developer Portal](http://developer.singular.live/) for further documentation of Singular APIs, including [Quick start examples](https://developer.singular.live/quick-start) and [How-to guides](https://developer.singular.live/rest-api/how-to-guides).\n\n## Authentication\n\nThe Singular API endpoints described in this collection use `tokens` for authentication.\n\n- **Shared App Token:**  \n    `Shared App Tokens` are used as path variables in the query URL.  \n    You can generate `Shared App Tokens` for App Instances in the Singular Dashboard. The article [Generate and revoke access to your Control App](https://support.singular.live/hc/en-us/articles/360046167591-Generate-or-revoke-access-to-your-Control-Application) on the [Singular Support Portal](https://support.singular.live) contains a step-by-step description.\n    \n- **Private and Public Tokens:**  \n    [Singular Data Streams](#0993532f-2725-433d-ba07-942882d2125c) use Private and Public Tokens for sending data and receiving data.\n    \n\n# Rate limits\n\nEvery day the Singular API receives millions of requests. To help manage the volume of requests, limits are placed on the number of requests that can be made. The Singular API also employs several safeguards against bursts of incoming traffic. Users who send many requests in quick succession or a high volume of data that exceed their account limits may see error responses that show up as [status code 429](https://tools.ietf.org/html/rfc6585).  \nThese limits help us provide the reliable and scalable API that our customers need.\n\nWe have the following limiters in the API, including:\n\n- **Daily limiters** limit the number of requests and the amount of data received by the API per day.\n    \n- **Burst rate limiters** limit the number of requests and the amount of data received by the API per minute.\n    \n\n**The daily and burst rate limiters depend on your subscription type.**\n\n| Subscription | Daily calls | Burst calls (per minute) | Daily data | Burst data (per minute) |\n| --- | --- | --- | --- | --- |\n| Free | 10,000 | 50 | 25MB | 200KB |\n| Professional | 20,000 | 200 | 100MB | 500KB |\n| Enterprise | 100,000 | 500 | 500MB | 1MB |\n| Education | 20,000 | 200 | 100MB | 500KB |\n| Event | 20,000 | 200 | 100MB | 500KB |\n| Trial | 100,000 | 500 | 500MB | 1MB |\n| UNO Plus | 20,000 | 200 | 50MB | 500KB |\n\nTreat these limits as maximums and don’t generate unnecessary load. See Handling Rate Violations for advice on handling 429s. If you suddenly see a rising number of rate-limited requests, please contact [Singular Support](https://mailto:support@singular.live?subject=Rate-Limit-Increase).  \nWe may reduce limits to prevent abuse or increase limits to enable high-traffic applications.\n\nTo request an increased rate limit, please contact [Singular Support](https://mailto:support@singular.live?subject=Rate-Limit-Increase).\n\nFor integrating data feeds with high-volume, high-frequency, and low-latency updates, we recommend using [Singular Data Streams](#0993532f-2725-433d-ba07-942882d2125c).\n\n## Endpoints using rate limits\n\n- POST / PATCH: `https://app.singular.live/apiv2/controlapps/{{token}}/control`\n    \n- POST / PATCH: `https://app.singular.live/apiv2/controlapps/{{token}}/command`\n    \n\n## Header response codes\n\nRequests to endpoints using rate limits return custom headers response codes. The response code is a JSON string with detailed information about daily limits and burst limits.\n\n| Header | Value |\n| --- | --- |\n| X-Singular-Ratelimit-Burst-Calls | `{\"limit\": 500, \"remaining\": 499, \"reset\": 1614430792}` |\n| X-Singular-Ratelimit-Daily-Calls | `{\"limit\":1048576, \"remaining\":1048452, \"reset\":1614430792}` |\n| X-Singular-Ratelimit-Burst-Data | `{\"limit\":100000, \"remaining\":99854, \"reset\":1614470401}` |\n| X-Singular-Ratelimit-Daily-Data | `{\"limit\":524288000, \"remaining\":522565096, \"reset\":1614470401}` |\n\n**Ratelimit values:**\n\n| Property | Description |\n| --- | --- |\n| `limit` | maximum number of requests per minute or day |\n| `remaining` | number of calls or bytes left within the current minute or day |\n| `reset` | UTC time indicates the next reset of the burst or daily limit |\n\n## Common causes and mitigation strategies\n\nRate limits can occur under a variety of conditions, but it’s most common in these scenarios:\n\n- Running a large volume of closely-spaced requests can lead to the burst rate limiting. This often happens when developing or testing a data feed integration. When engaging in these activities, you should try to control the client side's request rate and data volume (see Handling Rate Limit Violations).\n    \n- Sending huge amounts of data to the API can lead to the burst rate limiting. This happens when sending growing statistics data over a period of time. In such a case, you should control the data volume on the client-side and only send the required dynamic data to the API.\n    \n\n## Rate limit violations\n\nRate limit violations are logged to the [Account Usage Statistics](https://app.singular.live/users/settings/accountStatus).\n\n> Rate limit violations for **Professional and Enterprise Subscriptions** are logged, but API requests exceeding the limits will still be processed. \n  \n> Rate limit violations for **Free Subscriptions** will be logged, and API requests exceeding the limits will be rejected and return an [error status code 429](https://tools.ietf.org/html/rfc6585) `Too Many Requests` \n  \n\n## Handling rate limit violations\n\nA basic technique for integrations to handle rate limiting is to watch for `429 status codes` and build in a retry mechanism. The retry mechanism should follow an exponential backoff schedule to reduce request volume or increase the time between requests when necessary. Ideally, the client-side is self-aware of existing rate limits and can pause requests until the currently exceeded window expires.\n\nWe’d also recommend looking into the following techniques for handling limiting gracefully:\n\n- Add randomness into the requests to avoid a [thundering herd problem](https://en.wikipedia.org/wiki/Thundering_herd_problem).\n    \n- Implement a [token bucket algorithm](https://en.wikipedia.org/wiki/Token_bucket) for controlling rate limits at a global scale.\n    \n\n## Support\n\nFor help regarding accessing the Singular REST API, feel free to submit at [support ticket](https://support.singular.live/hc/en-us/requests/new) or send us an [email](https://mailto:support@singular.live?subject=REST-API).\n\n## Terms of Use\n\nFor information on API terms of use and privacy, refer to our policy document at [http://www.singular.live/terms-of-service](http://www.singular.live/terms-of-service) and [http://www.singular.live/privacy-policy](http://www.singular.live/privacy-policy).","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"2177855","team":82768,"collectionId":"68298413-dc8a-4c61-b41e-a0721d2a4fd0","publishedId":"2s83zcTSu6","public":true,"publicUrl":"https://api.singular.live","privateUrl":"https://go.postman.co/documentation/2177855-68298413-dc8a-4c61-b41e-a0721d2a4fd0","customColor":{"top-bar":"FFFFFF","right-sidebar":"555555","highlight":"58B947"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.0","publishDate":"2022-12-27T20:36:38.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/2a500e7404ff853b3c8252ea9221b8f0ce98a4e27d82c6355ded0c97e6123e8b","favicon":"https://res.cloudinary.com/postman/image/upload/v1569356740/team/sb53qfuqrhdm0bycgouv.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2s83zcTSu6"}