{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"754c78b3-6a94-47f6-9825-34e50966bf24","name":"WIP Micrometrics API External","description":"The Micrometrics [API](https://en.wikipedia.org/wiki/API) permits the transfer and updating of Micrometrics data, returning [JSON](https://en.wikipedia.org/wiki/JSON)\\-encoded responses. It is organized around [REST](https://en.wikipedia.org/wiki/Representational_State_Transfer).\n\n# Authentication\n\n## What do I need to authenticate?\n\nIn order to authenticate, you will require a set of API Credentials. Each set of credentials permits certain permissions for the data that can be accessed. If you do not have them, please contact [support@micrometrics.com](https://mailto:support@micrometrics.com) and request Experience API Credentials.\n\n## How are authenticated requests made?\n\nThe Micrometrics API uses [HMAC](https://en.wikipedia.org/wiki/HMAC) in order to verify the authenticity and identity of the request. With this, you do not need to send a username & password, nor will sending a request to an authentication endpoint be necessary. You simply will need to have a helper method to generate a _request signature_ that is sent as a header in your request.\n\nEnsure each of your requests contains the following header:\n\n**Key:** `Authorization`\n\n**Value:** `APIAuth (your_api_key):(your_request_signature)`\n\n## Generating a Request Signature\n\n**The format for the request signature is:**  \n`Base64(HmacSHA1(request_method,content_type,content,resource_uri,timestamp, your_api_secret))`\n\n| Name | Description | Type | Examples |  |\n| --- | --- | --- | --- | --- |\n| request_method | The method you are operating on for the given endpoint. | String | \"GET\", \"POST\", \"PUT\" |  |\n| content_type | The content type of your request. For now, this is done in JSON | String | \"application/json\" |  |\n| content | A Base64-encoded MD5 hash of the body of your request. Leave this blank if there is no body (eg: GET requests) | String | \"ODdFNzcxMUM5Rjk1NzMzNkRFMEU4RTlDMTUyMzQ2NTE=\" |  |\n| resource_uri | The [resource](https://restfulapi.net/) you are acting on. | String | \"/api/experience/devices/{device_id}\" |  |\n| Timestamp | The current timestamp of the time you are making this request. We use this to ensure old request signatures cannot be re-used | String | \"Fri, 04 Sep 2020 13:35:05 GMT\" |  |\n\n## Examples of Request Signatures\n\nGET a device with the hash of `Tgc9VyKJ-8a9-89uV7wwVc`:  \n`Base64(HmacSHA1(\"GET,application/json,,/api/experience/devices/Tgc9VyKJ-8a9-89uV7wwVc,Fri, 04 Sep 2020 13:35:05 GMT\", your_api_secret))`\n\nPOST a survey response to survey with the ID of `237`:\n\n`Base64(HmacSHA1(\"POST,application/json,0/nBW1QKiUuBw1ghZBwkpg==,/api/experience/surveys/237/responses,Fri, 04 Sep 2020 13:43:56 GMT\",your_api_secret))`\n\n# Pagination\n\nAPI responses are paginated using a cursor. When you request an index page for a resource, the response will contain a `Next-Cursor` header. To fetch the next page, set the `cursor` parameter on your next request to the value of this header.\n\nIf a response does not have the `Next-Cursor` header, or if it is empty, then there are no further records to be fetched.\n\n# Request Throttling\n\nAPI clients are limited in the number of requests they can make in a short period of time. If a client exceeds that limit, requests they make will fail with an `HTTP 429: Too Many Requests` error.\n\nOur throttles are based on a [leaky bucket algorithm](https://en.wikipedia.org/wiki/Leaky_bucket). Each client has a bucket, and each API request adds a token to the bucket. The bucket 'leaks' at a certain rate, making room for more tokens. If the bucket gets full then further requests cannot be made until there is room in the bucket.\n\nThis means that a client can make a burst of requests that fill the bucket faster than it is being emptied, but only to a point. After that they must wait.\n\nBy default, API clients have room in their bucket for 10 tokens, and it leaks at a rate of 1 token every second. Every HTTP request adds a single token to the bucket.\n\nThe following response headers contain details on your client's current throttling.\n\n| **Header** | **Value** |\n| --- | --- |\n| `RateLimit-Rate` | How many requests per second your client supports |\n| `RateLimit-Burst-Remaining` | How many more requests your client can make in a short period before being throttled |\n| `RateLimit-Retry-After` | How long your client needs to wait after being throttled before requests will succeed again. |\n\n# Global URL Parameters\n\nSome URL Parameters can be used on any request. The following can be used:\n\n| Key | Example | Description |\n| --- | --- | --- |\n| start_at | \"2020-09-05T23:59:59.999-04:00\" | Limits resource results to _after_ the start_at value. Defaults to 1 month before end of day of today |\n| end_at | \"2020-10-05T23:59:59.999-04:00\" | Limits resource results to _before_ the end_at value. Defaults to end of day of today |\n\n# FAQ\n\n## I keep receiving a 401 unauthorized status, yet my API Key and Secret are correct\n\n1. Ensure you are generating your request signature correctly from the section above\n    \n2. Ensure you have the correct default headers. We recommend having the three:\n    \n    | Header | Value | Example |\n    | --- | --- | --- |\n    | Date | `{CurrentDateTime}` | Wed, 09 Sep 2020 21:27:25 GMT |\n    | Content-Type | application/json | application/json |\n    | Authentication | APIAuth `{your_key}`:`{request_signature}` | APIAuth OaDNzi:fefNiwRCXbKgypGYDNIgPJ3FDrJns4c2++GThu= |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"19265575","team":218233,"collectionId":"754c78b3-6a94-47f6-9825-34e50966bf24","publishedId":"2sBXqKqLe5","public":true,"publicUrl":"https://docs.micrometrics.io","privateUrl":"https://go.postman.co/documentation/19265575-754c78b3-6a94-47f6-9825-34e50966bf24","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/88e73e79-5e2d-47d3-8bd3-f23d2a73666e/YXBwLWljb24tNTEyLnBuZw==","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":"https://content.pstmn.io/88e73e79-5e2d-47d3-8bd3-f23d2a73666e/YXBwLWljb24tNTEyLnBuZw==","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2026-05-04T20:55:49.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/88e73e79-5e2d-47d3-8bd3-f23d2a73666e/YXBwLWljb24tNTEyLnBuZw==","logoDark":"https://content.pstmn.io/88e73e79-5e2d-47d3-8bd3-f23d2a73666e/YXBwLWljb24tNTEyLnBuZw=="}},"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/14dc4c9384247bf1c30d8d3ce38cacf6f257b5689264a9b1e5cd65cdc5cb0ed9","favicon":"https://micrometrics.io/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://docs.micrometrics.io/view/metadata/2sBXqKqLe5"}