{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"f3caddd0-ef27-496c-80a0-a2eaf00e9ca2","name":"IQ Reseller V2","description":"# IQ Reseller API v2\n\nConnect your integration to inventory, purchase orders, sales orders, invoices, contacts, and other IQ Reseller records. This collection is a request reference and a starting point for Postman or your own code.\n\n## Start here\n\n1. Obtain an Integration API token for the intended IQ Reseller account and user. The integration user's permissions are managed in **Admin > Access**; an API key does not independently define a read-only scope.\n2. In your private Postman copy, open **Variables** and set `iqr-api-token`. Keep shared/public credential values blank. No separate environment is required.\n3. Run [Create Session Token](https://postman.iqreseller.com/#fcefd0e3-18e7-4ab5-b837-a198ce7a67bb). Read the case-sensitive `Data` string in the JSON response body. The collection's test script stores it in `iqr-session-token`.\n4. Start with an authorized read request, such as [Get Inventory by Serial Number](https://postman.iqreseller.com/#c2fb75bb-0522-47dd-b9a5-7297981f928a). Replace every example selector with your own tenant's values.\n5. Before a write, review the target records, payload, permissions, and side effects. Never run the whole collection against production as a smoke test.\n\n## Authentication in your own code\n\nCreate a session with your Integration API token:\n\n```http\nPOST https://signin.iqreseller.com/api/IntegrationAPI/Session\nContent-Type: application/json\n\n{\"APIToken\":\"<INTEGRATION_API_TOKEN>\"}\n```\n\nThe successful session response contains:\n\n```json\n{\"Data\":\"<SESSION_TOKEN>\"}\n```\n\nSend that opaque token unchanged on IQ data requests:\n\n```http\niqr-session-token: <SESSION_TOKEN>\n```\n\nDo not add a `Bearer` prefix. `Data` is a property of the session response **body**, not a header and not a universal wrapper for other endpoints. Placeholder tokens above are not usable credentials. Never publish or log real tokens.\n\n## Collection variables\n\n| Variable | Purpose |\n| --- | --- |\n| `baseUrl` | IQ data API base: `https://api.iqreseller.com`. |\n| `signinBaseUrl` | Session service base: `https://signin.iqreseller.com`. |\n| `responseFormat` | `JSON` or `XML`, only on routes that expose that variable. |\n| `iqr-api-token` | Private Integration API token used to create a session. |\n| `iqr-session-token` | Private session token returned in `Data`. |\n\nChanging `responseFormat` changes a variable-based URL; it does not convert a raw body. Match the URL, body syntax, and `Content-Type`. Fixed-format routes remain fixed. Empty credential values in generated public snippets are intentional: substitute your private token in code, not in published documentation.\n\n## Find the right operation\n\n| Goal | Start with |\n| --- | --- |\n| Authenticate | [Create Session Token](https://postman.iqreseller.com/#fcefd0e3-18e7-4ab5-b837-a198ce7a67bb) |\n| Find inventory by serial | [Serial-number lookup](https://postman.iqreseller.com/#c2fb75bb-0522-47dd-b9a5-7297981f928a) |\n| Discover purchase orders | [Filtered PO list](https://postman.iqreseller.com/#65871e6a-6a5c-498a-867d-6b7bdf13f563) or [legacy PO list](https://postman.iqreseller.com/#6a9b8b76-428e-4506-ac47-a73cceade0a3) |\n| Retrieve a particular PO | [Get Purchase Order by Purchase Order ID](https://postman.iqreseller.com/#52b966ef-0316-4d37-8d7f-3463c72be165) |\n| Add parts to inventory | [Part Add — one operation, JSON or XML](https://postman.iqreseller.com/#ed174c12-1fc5-4cff-a805-2e5d16968945) |\n| Import inventory attributes | [XML attribute import and configuration requirements](https://postman.iqreseller.com/#b35df66a-6109-48b8-84f0-a6daea8473ff) |\n\n## IDs, pagination, and filters\n\n- Use the exact parameter names and casing shown on each request. Legacy routes often use `id`; its entity is explained on the request page. An item ID identifies a master item; an inventory ID identifies an inventory record. They are not interchangeable.\n- Where the endpoint documents one-based pages, use `1` for the first page. Some retained legacy request samples contain `0`; this is not a confirmed default or a zero-based paging contract. Use a positive page size. Maximum sizes, zero-value behavior, and defaults require endpoint-specific confirmation.\n- Sort selectors are endpoint-specific. Do not copy PO sort values into another list endpoint. Use exact status values from the tenant; do not assume a shared numeric enum.\n- Date filters are not automatically a modified-since feed. The filtered PO list documents **purchase-date** bounds. Follow each endpoint's date format; do not assume time zones, inclusive bounds, or date-time support where those are unspecified.\n- URL-encode query values, especially spaces, special characters, serial numbers, and customer/vendor codes. Unsupported filters may be ignored rather than rejected.\n\n## Read and validate responses\n\nCheck HTTP status, `Content-Type`, and the endpoint's body together. A write can return HTTP 200 with a validation failure. A numeric `Status` is not a universal success convention: Part Add documents `Status: 0` with `StatusDescription: \"Success\"`.\n\nSession creation returns `Data`; serial lookup documents a JSON array or a JSON string error; XML import can return a serialized `<string>` message. Do not parse all endpoints through one assumed envelope. A Postman **No response body** panel may mean no saved example exists, not that the actual API returns an empty body. Pages distinguish verified examples from contracts still needing confirmation.\n\n## Errors, timeouts, and safe retries\n\n| Situation | Recommended next step |\n| --- | --- |\n| 401 / Unauthorized | Verify the session header, intended user/tenant, and user access. Renew the session using your authorized authentication flow; do not expose tokens in logs. |\n| 404 | Verify the exact route and deployment support. Check an endpoint's no-match example before treating every 404 as the same error. |\n| HTTP 200 with a failure message | Handle the operation as a failure according to its documented body; HTTP success alone is insufficient. |\n| Timeout or lost write response | Outcome is unknown. Check records and audit history before retrying, because the original operation may already have committed. |\n\nSession expiry, rate limits, retry intervals, and idempotency guarantees are not established by this collection. Do not invent them or blindly retry writes. Capture the endpoint, timestamp with time zone, HTTP status, sanitized response, and relevant record IDs when contacting support. Never send credentials in diagnostic logs.\n\n## Writes and automation\n\nEndpoint safety notes describe side effects and required review. Creating or revoking sessions also changes state. A `GET` method is not by itself a read-only guarantee: review operations such as **Create Invoice from Sales Order**. Automated clients must honor the explicit confirmation policy on each operation; documentation examples are not authorization to run it.\n\n## Documentation status\n\nReviewed and reformatted **October 2, 2026**. Existing routes, request payloads, authentication scripts, and collection variables are retained. Response examples are sanitized and labeled; sample-derived field tables are not a substitute for a complete server schema. Known incomplete or contradictory contracts are flagged on their request pages for verification.\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"43838664","team":3301119,"collectionId":"f3caddd0-ef27-496c-80a0-a2eaf00e9ca2","publishedId":"2sBYHNX3Pr","public":true,"publicUrl":"https://postman.iqreseller.com","privateUrl":"https://go.postman.co/documentation/43838664-f3caddd0-ef27-496c-80a0-a2eaf00e9ca2","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"E41B23"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"dark","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"E41B23"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"E41B23"}}]}},"version":"8.12.10","publishDate":"2026-10-07T13:40:24.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"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/a5b2c5b9b53f1e930bbcc66d10c47c23bebda46ac5ecb7d32ce592922a3e7863","favicon":"https://res.cloudinary.com/postman/image/upload/v1651692049/team/l8bjxqe4zbswldl69cyn.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://postman.iqreseller.com/view/metadata/2sBYHNX3Pr"}