{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"4bc50897-5c4e-4b26-af55-6681036a6b69","name":"Upsales API","description":"Welcome to the Upsales API! You can use this API to access all our API endpoints, such as the CRM API to look up sales data, or the Marketing Automation API to create leads into Upsales.\n\nThe API is organized around REST. All requests should be made over SSL. All request and response bodies, including errors, are encoded in JSON.\n\n## Please optimise your apps API request usage\n\nUpsales supplies a free API service for up to 99 999 API calls per day. A custom using more than this daily will be subject to a tier-based fee. (More usage equals higher cost).\n\nAs an app developer, we ask you to please optimise your API traffic in order for your customers to not perceive your service as a larger expense than it has to be.\n\n## Authentication\n\nAuthenticate your account by including your secret key in API requests. You can manage your API keys in under settings in Upsales as a admin users. Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such GitHub, client-side code, and so forth.\n\n## Format\n\nAlways include content-type: application/json as a header\n\n## Errors\n\nOur API returns standard HTTP success or error status codes. For errors, we will also include extra information about what went wrong encoded in the response as JSON.\n\n| Http Code | Description |\n| --- | --- |\n| 200 - OK | Everything worked as expected |\n| 400 - Bad Request | The request was unacceptable, often due to missing a required parameter. |\n| 401 - Unauthorized | No valid API key provided. |\n| 404 - Not Found | The requested resource doesn't exist or you don't have access to the resource |\n| 429 - To Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. |\n\n## Pagination\n\nOur list endpoints implements pagination. The limit of entries is set using the `limit` parameter in the query-string. The default limit is set to 1000 and the maximum limit is 2000. To retreieve the next page you use the `offset`\\-parameter in the query-string. It's value is the number of entries that you want to skip.\n\nTo be 100% sure you get all entities you need sort on ID when you do the pagination. For example if you want to fetch all companies, [https://integration.upsales.com/api/v2/accounts?sort=id&amp;limit=1000&amp;id=gt:LAST_ID_OF_PREV_BATCH](https://integration.upsales.com/api/v2/accounts?sort=id&limit=1000&id=gt:LAST_ID_OF_PREV_BATCH)\n\n## Filtering\n\nWe allow for filtering on most fields on our entities. The filter format is the following\n\n- For standard attributes: `attribute=comparisontype:value`\n    \n- For custom fields: `custom=comparisontype:fieldId:value`\n    \n- If you don't provide a comparisontype then it defaults to equals `attribute=value`\n    \n- Multiple values: `attribute=comparisontype:1,2,3,4,7`\n    \n\nYou can search on related entities when using filters. Example find all contacts with value true in custom field with id 4 on the company; example: .../contacts?client.custom=eq:4:1\n\n### Comparison Types\n\n| Type | Name | Description |\n| --- | --- | --- |\n| `eq` | Equals | Exact matches |\n| `ne` | Not equals | Exact non-matches |\n| `gt` | Greater than | Value greater than |\n| `gte` | Greater than equals | Value greater than/or equals |\n| `lt` | Less than | Value less than |\n| `lte` | Less than equals | Value less than/or equals |\n\n### Examples\n\nGet account where user.id not equals 1  \n[https://integration.upsales.com/api/v2/accounts?user.id=ne:1](https://integration.upsales.com/api/v2/accounts?user.id=ne:1)\n\nGet orders where order value is greater than 100 000 and date is greater than or equals 2016-01-01  \n[https://integration.upsales.com/api/v2/order?value=gt:100000&amp;date=gte:2016-01-01](https://integration.upsales.com/api/v2/order?value=gt:100000&date=gte:2016-01-01)\n\nGet contacts where customfield with id 1 is greater than 2016-03-05  \n[https://integration.upsales.com/api/v2/contacts?custom=gte:1:2016-01-01](https://integration.upsales.com/api/v2/contacts?custom=gte:1:2016-01-01)\n\n# Rate Limits\n\nAt Upsales we apply rate limits in order to protect our systems from abuse and over-utilization of our server resources.\n\nEvery request made with an API key is counted against several limits at once. Each one is a fixed window, counted per API key:\n\n| Window | Applies to | Limit |\n| --- | --- | --- |\n| 10 seconds | All requests | 200 |\n| 10 minutes | All requests | 6 000 |\n| 1 hour | All requests | 20 000 |\n| 10 minutes | Writes only | 2 000 |\n| 1 hour | Writes only | 5 000 |\n\nA \"write\" is a `POST`, `PUT`, `PATCH` or `DELETE` request. Writes count against both the write limits and the all-request limits.\n\nThe 10 second limit catches short spikes. The 10 minute and 1 hour limits catch a sustained grind that stays under the 10 second cap — for example a nightly sync that paces itself at a few requests per second will never trip the 200/10s limit but can still exceed the hourly ceiling.\n\nWindows are fixed rather than sliding. A window opens on the first request counted in it and resets when it expires, so use the `X-RateLimit-Reset` header to know when capacity returns rather than assuming a wall-clock boundary.\n\nWhen any one of these limits is exceeded the caller receives HTTP status 429 (Too Many Requests):\n\n``` json\n{\n    \"error\": {\n        \"key\": \"ThrottleLimit\",\n        \"code\": 429,\n        \"errorCode\": 4,\n        \"msg\": \"Too many requests\"\n    }\n}\n```\n\nWe recommend an exponential backoff of your requests when you receive a 429.\n\n## Rate limit headers\n\nEvery response carries the state of whichever window is currently closest to its limit. That is the limit that will block you first, and it is not always the 10 second one. On a 429 the headers describe the window that was actually exceeded.\n\n`X-RateLimit-Limit` = number of requests allowed in that window\n\n`X-RateLimit-Remaining` = number of requests remaining in that window\n\n`X-RateLimit-Reset` = number of seconds until that window resets\n\n## Session authentication\n\nIf you authenticate by logging in with `POST /session` instead of using an API key, writes are subject to a separate and tighter set of limits. Exceeding them returns `SessionWriteLimit` with `errorCode` 177 rather than `ThrottleLimit`:\n\n``` json\n{\n    \"error\": {\n        \"key\": \"SessionWriteLimit\",\n        \"code\": 429,\n        \"errorCode\": 177,\n        \"msg\": \"Write rate limit exceeded for session authentication. Use an API key for high-volume or automated writes.\"\n    }\n}\n```\n\nThese limits are sized for a person working in the Upsales interface, not for an integration. Always use an API key for automated or bulk writes.\n\n# API Documentation Changelog\n\n2026-09-02: Added folders for Currencies, Support tickets, Comments, E-signatures, Forms and Mail\n\n2026-09-01: Documented the 10 minute and 1 hour rate limit windows, the separate limits on write requests, and the SessionWriteLimit error\n\n2023-10-27: Added Information about rate limits\n\n# FAQ\n\n## Why do spaces disappear in string fields?\n\nUpsales trims all string fields, which means that spaces are removed at the beginning and end of a string.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"4421023","team":24218886,"collectionId":"4bc50897-5c4e-4b26-af55-6681036a6b69","publishedId":"RW87rVf1","public":true,"publicUrl":"https://api.upsales.com","privateUrl":"https://go.postman.co/documentation/4421023-4bc50897-5c4e-4b26-af55-6681036a6b69","customColor":{"top-bar":"1D3D48","right-sidebar":"303030","highlight":"4A90E2"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.12.6","publishDate":"2021-05-24T08:41:20.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/cd0b6419efa86a7dccdda6c4c020005703fcf2f7461b9b7947d13c5ea8933521","favicon":"https://upsales.com/favicon.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://api.upsales.com/view/metadata/RW87rVf1"}