{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"7e1bc156-9a3b-4cc9-a45f-b65869516027","name":"Memfault API Documentation","description":"# About\n\nThis is the documentation for the Memfault REST API.\n\nFor CI & scripting, we recommend using the  \n[<b>Memfault CLI Tool</b>](https://mflt.io/memfault-cli) which exposes an easy to use interface for a majority of the REST APIs detailed below.\n\nLinked below are other useful resources:\n\n- [Firmware SDK Documentation](https://github.com/memfault/memfault-firmware-sdk)\n    \n- [Guide: Data From Firmware To The Cloud](https://mflt.io/2MGMoIl)\n    \n- [Memfault Keyword Terminology](https://mflt.io/terminology)\n    \n- [HTTP Reponse Status Codes](https://docs.memfault.com/docs/reference/reference-http-response-status-codes#overview)\n    \n\n# Memfault URL's\n\nThere are four API related URL's that will be used with Memfault's service. The  \nproper use for each is as follows:\n\n- `api.memfault.com` - Use along with an API Key for normal consumption and use  \n    of the API documented below.\n    \n- `chunks.memfault.com` - Use with the **Chunks** API to push chunked data into  \n    Memfault.\n    \n- `ingress.memfault.com` - Use with API's that push data into Memfault, such as  \n    **Events** and **Coredumps**.\n    \n- `files.memfault.com` - Use in Continuous Integration systems for uploading  \n    large files, such as binaries, symbol files, bugreports, etc.\n    \n\n# Authentication\n\nThere are four ways to authenticate when interfacing with the Memfault API.\n\n## Email + Password\n\nTo test if the Email + Password works, one can try this example request\n\n``` bash\ncurl --user user@example.com:mypassword https://api.memfault.com/auth/me\n\n ```\n\nwhere `user@example.com` is the User's email and `mypassword` is the User's  \n_password_\n\n## Email + API Key\n\nPlease refer to the section 'Auth -> Generate User API Key' to learn how to get  \nan API key. Once one is generated, the user can authenticate with the email +  \nAPI key combination using Basic Auth\n\nTo test if the Email + API Key works, one can try this example request\n\n``` bash\ncurl --user user@example.com:123e4567e89b12d3a456426655440000 https://api.memfault.com/auth/me\n\n ```\n\nwhere `user@example.com` is the User's email and  \n`123e4567e89b12d3a456426655440000` is the User's _API Key_\n\n## Organization Auth Token\n\nOrganization Auth Tokens allow access of the organization's resources for  \nautomation. They can be accessed and managed by Administrators at Admin →  \nOrganization Auth Tokens in the Memfault UI.\n\nOrganization Auth Tokens use Bearer Authentication.\n\nTo test if the Organization Auth Token works, one can try this example request\n\n``` bash\ncurl --header \"Authorization: Bearer oat_123e4567e89b12d3a456426655440000\" https://api.memfault.com/api/v0/organizations\n\n ```\n\n## Memfault Project Key\n\nThis is only for use when pushing data into Memfault, or by a **Device** that  \nmay have limited memory when accessing specific endpoints (such as the Latest  \nRelease endpoint).\n\n> This sort of authentication **will not** work with most API endpoints. API  \nendpoints that accept or require this form of authentication will explicitly  \nsay so in their specific documentation. \n  \n\nThis enables **Devices** to associate directly to a **Project** instead of with  \na particular _User_, Memfault account, or API Key. It also allows for a shorter  \nURL which doesn't have to specify the **Project** or **Organization**.  \n**Devices** can make requests such as:\n\n``` bash\ncurl \\\n  https://ingress.memfault.com/api/v0/events\n  --header \"Memfault-Project-Key: 06e7916f2db44167a1f5196cfe83a898\"\n  --header 'Content-Type: application/json' \\\n  --data '{ ... }'\n\n ```\n\nThe Memfault Project Key for a **Project** can be found in the Dashboard under  \n_Settings_.\n\n# Requests\n\nAll API data sent and received is [JSON](https://en.wikipedia.org/wiki/JSON).\n\nAll request must have the `Host` header set or else a `400 Bad Request` response  \nwill be returned.\n\n## Methods\n\n| Method | Example Route | Count | Description |\n| --- | --- | --- | --- |\n| `GET` | `/objects` | many | Get a list of the objects |\n| `GET` | `/objects/:key` | single | Get a single object |\n| `POST` | `/objects` | single | Create a single object |\n| `PATCH` | `/objects/:key` | single | Update any number of fields in an object |\n| `PUT` | `/objects/:key` | single | Create/Update a relationship object |\n| `DELETE` | `/objects` | many | Delete many objects (sent as JSON data) |\n| `DELETE` | `/objects/:key` | single | Delete a single object |\n\n> NOTE: Not all routes implemented for all types. Please reference the  \ndocumentation for exact routes and features \n  \n\n## Parameters\n\nMost endpoints with methods of type `POST`, `PATCH`, and `PUT` will accept  \nparameters and data in JSON format.\n\nHeader: `Content-Type: application/json`\n\n## Query Parameters & Filtering\n\n### Multiple Values\n\nMany API endpoints allow filtering of the results through the use of query  \nparameters. These are optional and URL encoded. The list of possible parameters  \nare listed under each route. Many of them accept list of values, in the  \nfollowing format:\n\nex. single **Cohort**\n\n``` plaintext\n/issues?cohort=alpha\n\n ```\n\nex. List of **Cohorts**\n\n``` plaintext\n/issues?cohort=alpha&cohort=beta&cohort=internal\n\n ```\n\nQuery Parameters that accept lists are denoted by the `[]` signifier after their  \nname in the documentation for each endpoint. ex. `cohorts[]`\n\n### Timestamps\n\nWhen sending timestamps in requests as parameters, such as for `created_date` or `first_seen`, ISO 8601 standard with a `Z` is required.\n\n**Valid for requests:**\n\n- `2025-02-27T00:00:00Z`\n    \n\n**Not valid for requests.** Will return 'Not a valid datetime'\n\n- `2025-02-27`\n    \n- `2025-02-27T00:00:00+00:00`\n    \n\n## Sorting\n\nFor all `sort` parameters, you may include `-` to force _Descending_ sort, or  \nleave it off to force _Ascending_ sort.\n\nThe following will sort by `created_date` descending, with the newest entries  \nlast.\n\n`/projects?sort=-created_date`\n\nThe following will sort by `created_date` ascending, with the newest entries  \nfirst.\n\n`/projects?sort=created_date`\n\n## Pagination\n\nPagination works on every endpoint, and the following parameters can be passed  \nin to manipulate the page and size of each request.\n\n| Query String Parameter | Required | Description |\n| --- | --- | --- |\n| page | optional | Page number of the result set (default: 1) |\n| per_page | optional | Limit the number of results per page. (default: 20, max: 100) |\n\nExample:\n\n``` bash\ncurl -X GET \"https://app.memfault.com/api/v0/organizations/memfault/projects/demo/events?per_page=10&page=2\"\n\n ```\n\n## Sorting\n\nFor all `sort` parameters, you may include `-` to sort descending, or  \nomit it to use the default ascending sort.\n\nThe following will sort by `created_date` descending, with the newest entries  \nlast.\n\n`/projects?sort=-created_date`\n\nThe following will sort by `created_date` ascending, with the newest entries  \nfirst.\n\n`/projects?sort=created_date`\n\n## Versions\n\nAll _Versions_ are required to be [Semantic Versions](https://semver.org/).\n\n# Responses\n\n## Pagination\n\nOn responses where multiple items could be returned, a `paging` field in the  \nJSON object is returned.\n\n``` json\n{\n  \"data\": {\n    ...\n  }\n  \"paging\": {\n    \"item_count\": 35,\n    \"page\": 1,\n    \"page_count\": 1,\n    \"per_page\": 100,\n    \"total_count\": 35\n  }\n}\n\n ```\n\n| Field | Type | Description |\n| --- | --- | --- |\n| `item_count` | `Number` | Number of items return in this response |\n| `total_count` | `Number` | Number of items total on server that could be returned |\n| `page` | `Number` | The current page number |\n| `page_count` | `Number` | The number of pages that could be returned from the server |\n| `per_page` | `Number` | The maximum number of items that will be returned in a response |\n\n## Schema\n\nTimestamps are returning in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)  \nformat.\n\n`2014-12-22T03:12:58.019077+00:00`","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"5491322","team":263629,"collectionId":"7e1bc156-9a3b-4cc9-a45f-b65869516027","publishedId":"RzfdqqfR","public":true,"publicUrl":"https://api-docs.memfault.com","privateUrl":"https://go.postman.co/documentation/5491322-7e1bc156-9a3b-4cc9-a45f-b65869516027","customColor":{"top-bar":"FFFFFF","right-sidebar":"141845","highlight":"39C0CE"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"system_default","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"141845","highlight":"39C0CE"}}]}},"version":"8.10.1","publishDate":"2024-08-28T08:01:49.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"Production","id":"114b8b26-3761-416c-b987-7b0575c54c05","owner":"5491322","values":[{"key":"SERVER","value":"https://api.memfault.com","enabled":true},{"key":"CHUNKS_SERVER","value":"https://chunks.memfault.com","enabled":true},{"key":"INGRESS_SERVER","value":"https://ingress.memfault.com","enabled":true},{"key":"FILES_SERVER","value":"https://files.memfault.com","enabled":true},{"key":"USER_EMAIL","value":"user@memfault.com","enabled":true},{"key":"USER_PASSWORD","value":"mypassword","enabled":true,"type":"secret"},{"key":"organization_slug","value":"acme-inc","enabled":true},{"key":"project_slug","value":"shapemate","enabled":true},{"key":"device_serial","value":"MFLT0000001","enabled":true},{"key":"cohort_slug","value":"internal","enabled":true},{"key":"cohort_name","value":"Internal Channel","enabled":true},{"key":"release_version","value":"1.0.0","enabled":true},{"key":"hardware_version","value":"evt","enabled":true},{"key":"software_type_name","value":"main-fw","enabled":true},{"key":"software_version","value":"1.0.0","enabled":true},{"key":"main-fw","value":"main-fw","enabled":true,"type":"default"},{"key":"software_type","value":"main-fw","enabled":true,"type":"default"},{"key":"API_KEY","value":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","enabled":true,"type":"secret"}],"published":true}],"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/3f13487175f9e0b778fec4f75448c9b0d4fdb2e020c9650cefdacaffefbaed5f","favicon":"https://res.cloudinary.com/postman/image/upload/v1551588341/team/g4qexymdogxls6a7aesf.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"},{"label":"Production","value":"5491322-114b8b26-3761-416c-b987-7b0575c54c05"}],"canonicalUrl":"https://api-docs.memfault.com/view/metadata/RzfdqqfR"}