{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"c56b816f-ef8a-4f2c-95da-7980ec6816bd","name":"HowNow APIs","description":"HowNow External API collection covering authentication, User management, Content, Learning records, Skills, and Job tracking.\n\n## **Authentication & Security**\n\n### **How to Obtain Credentials**\n\nBefore you can make authorized requests, you must secure your API keys:\n\n1. **Contact Support:** Reach out to our Customer Support team to initiate the credential request.\n    \n2. **Select a Plan:** You must provide details on your chosen subscription plan ( Essential, or Enterprise) to define your rate limits.\n    \n3. **Receive Keys:** Once approved, you will receive a `client_id` and a `client_secret`.\n    \n\n> **Credential Safety**  \nYour \\`client_id\\` and \\`client_secret\\` carry the same privileges as an administrator account. Store them securely on your backend server. Never expose them in browsers, mobile applications, or public code repositories. \n  \n\n### Authentication Flow\n\n1. Call `POST {{base_url}}/token` with OAuth2 client credentials (grant_type, client_id, client_secret, scope) to obtain a Bearer token\n    \n2. Use the `access_token` from the response as `Bearer` in the `Authorization` header of all subsequent requests\n    \n3. Token expires after 3600 seconds (1 hour)\n    \n4. All API endpoints execute requests using the workspace owner as the default acting user. If you need to perform actions on behalf of a different user, you may include their specific ID via the optional `X-User-Id` header, which is supported across all endpoints excluding the token endpoint\n    \n\n### **Token Validity**\n\nEach issued Bearer token is strictly valid for 1 hour (3600 seconds). Keep this short lifespan in mind and design your backend to seamlessly request a fresh token when your current session expires.\n\n## **Rate Limits**\n\nRate limits are applied per API key based on your subscription tier. Exceeding your tier limit will return a `429 Too Many Requests` response.\n\n| Tier | Rate Limit | Requests/Hour | Target Use Case |\n| --- | --- | --- | --- |\n| Essential | 50 req/min | 3,000 | Small-to-mid production workloads |\n| Pro | 100 req/min | 6,000 | High-scale production / growth-stage |\n\n## Base URLs: [https://api.hownow.app](https://api.hownow.app)\n\nDepending on your organization's setup, your API requests should be directed to the appropriate regional endpoint. Please ensure you are using the correct base URL for your instance.\n\n> **Note:** If you are unsure which region your data is hosted in, please **get in touch with our Support team** for clarification before configuring your integration. \n  \n\n## Async Operations\n\nSome endpoints (user upsert, learning records, skills) return a `job_id`. Use [this API](https://developer.hownow.app/#ab61107b-e796-46b0-ae11-c9b55866e1b0) to track progress.\n\nJob statuses: `in_progress`, `completed`, `completed_with_warnings`, `failed`\n\n## Pagination\n\nPaginated endpoints accept `page` (default: 1) and `per_page` (default: 20, max: 100) query parameters.\n\n## Common Error Responses\n\n- `400 Bad Request` - Invalid parameters\n    \n- `401 Unauthorized` - Invalid or missing authentication\n    \n- `403 Forbidden` - User does not have permission\n    \n- `404 Not Found` - Resource not found\n    \n- `422 Unprocessable Entity` - Validation error\n    \n- `500 Internal Server Error` - Something went wrong\n    \n- `429 Too Many Requests` - Reached maximum rate limit","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"52562409","team":13600982,"collectionId":"c56b816f-ef8a-4f2c-95da-7980ec6816bd","publishedId":"2sBXiesDw8","public":true,"publicUrl":"https://developer.hownow.app","privateUrl":"https://go.postman.co/documentation/52562409-c56b816f-ef8a-4f2c-95da-7980ec6816bd","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"ff4f56"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"dark","themes":[{"name":"dark","logo":"https://content.pstmn.io/896ca3e8-0bec-45ab-9bea-7debe42dc2fd/aG93bm93NC5wbmc=","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"ff4f56"}},{"name":"light","logo":"https://content.pstmn.io/896ca3e8-0bec-45ab-9bea-7debe42dc2fd/aG93bm93NC5wbmc=","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"ff4f56"}}]}},"version":"8.10.1","publishDate":"2026-03-11T13:27:12.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/896ca3e8-0bec-45ab-9bea-7debe42dc2fd/aG93bm93NC5wbmc=","logoDark":"https://content.pstmn.io/896ca3e8-0bec-45ab-9bea-7debe42dc2fd/aG93bm93NC5wbmc="}},"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/d77b183a2b8681af4e4da1cb7547807c635915df394832729ac8c21f631699c2","favicon":"https://hownow.app/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://developer.hownow.app/view/metadata/2sBXiesDw8"}