{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"90c97088-a63a-4f93-848e-279aa598686e","name":"ChangeNOW","description":"# Authentication\n\nIntegrate the ChangeNOW exchange service using the\n\n<a href=\"https://changenow.io/\">changenow.io</a>\n\nAPI.  \nTo access the ChangeNOW API you need to generate an API key. You can get one in\n\n<a href=\"https://changenow.io/affiliate\">your personal affiliate account</a>\n\nor by emailing us at\n\n[partners@changenow.io](https://mailto:partners@changenow.io)\n\nPlease note that we offer the opportunity to add extra fields in the Create transaction request [for the standard](#dfe05b67-8453-462e-b4dd-fa4b0001c197) or [fixed-rate flow](#91302b9f-eb2d-4b71-a11f-825d63939f5f):\n\n- userId — a personal and permanent identifier under which information is stored in the database;\n    \n- payload — object that can contain up to 5 arbitrary fields up to 64 characters long;\n    \n\nIf you would like to enable these fields, please contact us at [](https://mailto:api@changenow.io)[partners@changenow.io](https://mailto:partners@changenow.io) with the subject line \"Special partner fields\".\n\nNote: In some cases, you might need a private API key. Those cases include situations when you can not guarantee the security of your standard API key, for example, when it is transferred onto the client-side or when someone else has access to it. To avoid the list of transactions that were conducted through your API getting public, you can use a private API key. To get it, please contact us at\n\n<a href=\"mailto:api@changenow.io\"></a>\n\n<a href=\"https://mailto:partners@changenow.io\">partners@changenow.io</a>\n\nAfter getting your private API key, you can use your standard API key for running all the API methods, except for the 'Get the transaction list' method. The 'Get the transaction' method can be called only with your private API key.\n\n**Rate limits**  \nHere are the rate limits for our API endpoints:  \n\\- 1800 calls per minute  \n\\- 30 calls per second\n\n# Work Flow\n\n<h4>Here is a simple work flow for the Standard Flow API:</h4>\n\n1. API - Get a list of currently available currencies with the\n    \n    <a href=\"#f5216aba-6a44-49eb-a075-ad4435aa40db\">'List of available currencies'</a>\n    \n    method;\n    \n2. UI - Ask a user for the currency pair to exchange. For example, BTC (Bitcoin) to ETH (Ethereum);\n    \n3. API - Get the minimum exchange amount for the selected currency pair with the\n    \n    <a href=\"#6f50a577-8558-4f58-b90c-85dfaab42c81\">'Minimal Exchange Amount'</a>\n    \n    method;\n    \n4. UI - Ask a user for the amount to exchange and check if this amount is bigger than the minimum exchange amount;\n    \n5. API - Call the\n    \n    <a href=\"#c95b63b2-03e1-4087-95cd-6b43c237dc7f\">'Estimated Exchange Amount'</a>\n    \n    method to get the estimated amount for the exchange (in our example, ETH estimated amount);\n    \n6. UI - Show a user the estimated exchange amount and ask for confirmation;\n    \n7. UI - Ask a user for their wallet address to send the funds after the exchange is completed (their refund address, extra ID, refund extra ID);\n    \n8. API - Call the\n    \n    <a href=\"#dfe05b67-8453-462e-b4dd-fa4b0001c197\">'Create Exchange Transaction'</a>\n    \n    method to create an exchange and get the deposit address (in our example, the generated BTC wallet address is returned from this method);\n    \n9. UI - Ask a user to send the funds that they want to exchange to the generated deposit address (in our example, user has to send BTC coins);\n    \n10. UI - A user sends coins, ChangeNOW performs an exchange and makes a withdrawal to user address (in our example, to their ETH address);\n    \n11. API - With\n    \n    <a href=\"#fa12244b-f879-4675-a6f7-553cc59435dc\">'Transaction status'</a>\n    \n    you can get the transaction status and display it to a user for them to obtain all the info on the exchange.\n    \n\n<h5>Scheme Of Using ChangeNOW's API For The Standard Flow</h5>\n\n<img src=\"http://changenow.io/images/partners/assets/api/standard-flow.png\">\n\n<h4>Here is a simple work flow for the Fixed-Rate Flow API:</h4>\n\n1. API - Get the list of currently available currencies with the\n    \n    <a href=\"#f5216aba-6a44-49eb-a075-ad4435aa40db\">'List of available currencies'</a>\n    \n    method. Use _fixedRate=true_ request parameter.\n    \n2. UI - Ask a user to select a pair to exchange. For example, BTC (Bitcoin) to ETH (Ethereum);\n    \n3. API - Ask a user for the amount to exchange and check if this amount is bigger than the minimum exchange amount and less than the maximum amount (minimum and maximum exchange amounts may be obtained from the\n    \n    <a href=\"#e81140f2-f341-41d4-8f91-94eee733fdd2\">'Exchange range fixed-rate'</a>\n    \n    method);\n    \n4. API - Call the\n    \n    <a href=\"#b61164cf-a1bd-4448-9cd1-62f6252b8d8c\">'Estimated fixed-rate exchange amount'</a>\n    \n    method to get the estimated amount for the exchange (in our example, the ETH estimated amount).\n    \n5. UI - Show a user the estimated exchange amount and ask for confirmation;\n    \n6. UI - Inform a user that a deposit must be made within a certain timeframe (10 minutes), otherwise exchange will not proceed;\n    \n7. UI - Ask a user for their wallet address to send the funds after the exchange is completed (their refund address, extra ID, refund extra ID);\n    \n8. API - Call the\n    \n    <a href=\"#91302b9f-eb2d-4b71-a11f-825d63939f5f\">'Create fixed-rate exchange'</a>\n    \n    method to create an exchange and get the deposit address (in our example, the generated BTC wallet address is returned from this method). The deposit must be made within a certain timeframe (10 minutes), otherwise exchange will not proceed;\n    \n9. UI - Ask a user to send the funds that they want to exchange to the deposit address within a certain time frame (in our example, user has to send BTC);\n    \n10. UI - A user sends coins, ChangeNOW performs an exchange and makes a withdrawal to user address (in our example, to their ETH address);\n    \n11. API - With\n    \n    <a href=\"#fa12244b-f879-4675-a6f7-553cc59435dc\">'Transaction status'</a>\n    \n    you can get the transaction status and display it to a user for them to obtain all the info on the exchange.\n    \n\n<h5>Scheme Of Using ChangeNOW's API For The Fixed-Rate Flow</h5>\n\n<img src=\"https://content-api.changenow.io/uploads/FR_first_9e4faf4b97.png\">\n\n# API integration troubleshooting\n\n### GET Available actions\n\nError: 400 | Invalid exchange ID\n\nDescription: the provided exchange ID is not valid \n\nWhat to do: \n\n1. Verify that the provided ID matches the ID returned in the POST Create transaction response. The Exchange ID must be exactly 14 characters long.\n    \n\nError: 404 | Non-existing exchange\n\nDescription: the exchange with this ID does not exist\n\nWhat to do:\n\n1. Verify that the value from the \\[id parameter\\] matches the \\[id parameter\\] from the POST Create transaction request. Exchange ID consists of 14 characters.\n    \n\n### POST Continue exchange\n\nError: 400 | Push unavailable\n\nDescription: The exchange cannot be pushed\n\nWhat to do: \n\n1. Use the POST Refund exchange endpoint, if available; otherwise please reach out to [support@changenow.io](https://mailto:support@changenow.io), specifying the transaction ID\n    \n\nError: 404 | Exchange not found\n\nDescription: the exchange with this ID does not exist\n\nWhat to do: \n\n1. Verify that the value from the \\[id parameter\\] matches the \\[id parameter\\] from the POST Create transaction request. Exchange ID consists of 14 characters.\n    \n\n### POST Refund exchange\n\nError: 400 | Refund unavailable\n\nDescription: The exchange cannot be refunded\n\nWhat to do: \n\n1. Use the POST Continue exchange endpoint, if available; otherwise please reach out to [support@changenow.io](https://mailto:support@changenow.io), specifying the transaction ID\n    \n\nError: 400 | Refund address doesn’t match address from the exchange\n\nDescription: The refund address does not match the refund address from the exchange\n\nWhat to do: \n\n1. Verify that the address from the \\[address parameter\\] matches the address from the \\[refundAddress\\] parameter in the POST Create transaction request\n    \n\nError: 404 | Exchange not found\n\nDescription: The exchange with this ID does not exist\n\nWhat to do: \n\n1. Verify that the value from the \\[id parameter\\] matches the \\[id parameter\\] from the POST Create transaction request. Exchange ID consists of 14 characters.\n    \n\n### GET List of available pairs\n\n400 | Bad request\n\nDescription: The specified parameters are not valid\n\nWhat to do: \n\n1. Make sure all required parameters are specified\n    \n2. Recheck the value format:\n    \n    1. Currency parameters (fromCurrency, toCurrency) format can be re-checked via the GET List of available currencies endpoint\n        \n    2. Network parameters (fromNetwork, toNetwork) format can be re-checked via the GET List of available currencies endpoint\n        \n    3. \\[flow parameter\\] is either \\[standard\\] or \\[fixed-rate\\]\n        \n\n401 Unauthorized \n\nDescription: your API key is not pasted in the ‘x-changenow-api-key’ header, or specified incorrectly\n\nWhat to do: \n\n1. Locate your API key in Partner Dashboard > Profile Settings\n    \n2. Make sure to paste your API key (Partner Dashboard > Profile settings) in the ‘x-changenow-api-key’ header\n    \n\n403 Forbidden\n\nDescription: the endpoint is not activated for your API key\n\nWhat to do: \n\n1. Contact your BD to enable the endpoint\n    \n\n500 Internal server error\n\nDescription: service error on our side\n\nWhat to do: \n\n1. Contact support team for more information\n    \n\n### GET Exchange range\n\n400 Bad request\n\nDescription: the specified parameters are not valid\n\nWhat to do:\n\n1. Make sure all required parameters are specified\n    \n2. Recheck the value format:\n    \n    1. Currency parameters (fromCurrency, toCurrency) format can be re-checked via the GET List of available currencies endpoint\n        \n    2. Network parameters (fromNetwork, toNetwork) format can be re-checked via the GET List of available currencies endpoint\n        \n    3. \\[flow parameter\\] is either \\[standard\\] or \\[fixed-rate\\]\n        \n\n### GET Estimated exchange amount\n\n401 Unauthorized\n\nDescription: your API key is not pasted in the ‘x-changenow-api-key’ header, or specified incorrectly\n\nWhat to do: \n\n1. Locate your API key in Partner Dashboard > Profile Settings\n    \n2. Make sure to paste your API key (Partner Dashboard > Profile settings) in the ‘x-changenow-api-key’ header\n    \n\n### POST Create exchange transaction\n\n400 Bad request\n\nDescription: The specified parameters are not valid\n\nWhat to do:\n\n1. Make sure all required parameters are specified\n    \n2. Recheck the value format:\n    \n    1. Currency parameters (fromCurrency, toCurrency) format can be re-checked via the GET List of available currencies endpoint\n        \n    2. Network parameters (fromNetwork, toNetwork) format can be re-checked via the GET List of available currencies endpoint\n        \n    3. \\[flow parameter\\] is either \\[standard\\] or \\[fixed-rate\\]\n        \n\n### GET Transaction status\n\n401 Bad request (Unauthorized)\n\nDescription: your API key is not pasted in the ‘x-changenow-api-key’ header, or specified incorrectly\n\nWhat to do: \n\n1. Locate your API key in Partner Dashboard > Profile Settings\n    \n2. Make sure to paste your API key (Partner Dashboard > Profile settings) in the ‘x-changenow-api-key’ header\n    \n\n403 Bad request (Forbidden)\n\nDescription: the endpoint is not activated for your API key\n\nWhat to do: contact your BD to enable the endpoint\n\n### GET Address validation\n\n400 Invalid address\n\nDescription: the provided address is not valid for this network, or specified incorrectly\n\nWhat to do:\n\n1\\. Recheck that the network is supported by ChangeNOW\n\n2\\. Recheck that the address is specified correctly and is valid for this network using a respective blockchain explorer\n\n### GET User addresses\n\n404 Not existed address\n\nDescription: the provided address name does not exist\n\nWhat to do: \n\n1. Recheck that the provided address name from the \\[name\\] parameter is valid and provided in full\n    \n\n### GET Estimated exchange network fee\n\n401 Unauthorized\n\nDescription: your API key is not pasted in the ‘x-changenow-api-key’ header, or specified incorrectly\n\nWhat to do: \n\n1. Locate your API key in Partner Dashboard > Profile Settings\n    \n2. Make sure to paste your API key (Partner Dashboard > Profile settings) in the ‘x-changenow-api-key’ header\n    \n\n500 Unknown error\n\nDescription: service error on our side\n\nWhat to do:\n\n1. Reach out to [support@changenow.io](https://mailto:support@changenow.io) for more information, specifying the request and the response\n    \n\n### GET Market estimate fiat and crypto\n\n400 Bad request\n\nDescription: the provided parameters are not valid / are not provided\n\nWhat to do: recheck that the parameters are valid and all the required parameters are provided in the request\n\n### GET Exchanges\n\n400 | Query params error \n\nDescription: the request parameters are specified incorrectly\n\nWhat to do:\n\n1. Make sure all required parameters are specified\n    \n2. Recheck the value format against the format specified in the endpoint description\n    \n\n401 | Authorization error\n\nDescription: the provided private API key is not valid\n\nWhat to do: provide a valid API key. You can request it by contacting your BD manager.\n\n# API Documentation","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"8180765","team":451850,"collectionId":"90c97088-a63a-4f93-848e-279aa598686e","publishedId":"SVfTPnM8","public":true,"publicUrl":"https://documenter-api.postman.tech/view/8180765/SVfTPnM8","privateUrl":"https://go.postman.co/documentation/8180765-90c97088-a63a-4f93-848e-279aa598686e","customColor":{"top-bar":"FFFFFF","right-sidebar":"000","highlight":"3BEE81"},"documentationLayout":"classic-double-column","version":"8.12.6","publishDate":"2019-09-03T09:56:42.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/805f78d21f6ea886334656e8744808bd70f955ec9e6dba44472ec05e58ede842","favicon":""},"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://documenter.gw.postman.com/view/metadata/SVfTPnM8"}