{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"e1ff8b3f-b61a-4efb-8a8f-15c324eabce8","name":"Nokrin - Built on OnePipe","description":"Account-to-account payment methods are more prevalent on the African continent than credit cards. [Nokrin](https://nokrin.com) enables your business with the most efficient way to collect payments and payout using a2a rails. This API documentation provides the step by step guides for embedding this functionality within your workflows\n\n\\[ [Information on collections](https://nokrin.com/invoicing/)\\] \\[ [Information on payouts](https://nokrin.com/payout/) \\]\n\n---\n\n#### Take a look at what's possible\n\n> Want to see an ideal embedded payments integration that combines virtual accounts with 1-click direct-from-account payments? Play with [this demo](http://demo.paywithaccount.com) and see what happens after you register. You can embed an experience just like that \n  \n\n---\n\n# Getting started\n\nHere are the preliminary steps before you can use Nokrin via APIs\n\n1. Sign up on at [https://app.nokrin.com/sign-up](https://app.nokrin.com/sign-up)\n    \n2. Request API access \\[[guide](https://paywithaccount.com/guide/?q=How%20to%20request%20API%20access)\\]\n    \n3. Once approved, you will receive an email showing how to retrieve your API credentials\n    \n\n# **General API information**\n\nAll requests to the API are made through a single base URL\n\n```\nhttps://api.onepipe.io\n\n ```\n\nThere are no separate URLs for sandbox and production. Instead, the environment is controlled by the **`mock_mode`** field in the request payload\n\n# Mock mode\n\n- **`mock_mode = inspect`** **→** Sandbox\n    \n    - Requests are processed in test mode\n        \n    - You receive mock responses that simulate the expected behavior of the endpoint\n        \n    - Recommended for development and early-stage integration testing\n        \n- **`mock_mode = live`** **→** Production\n    \n    - Requests are processed in live mode\n        \n    - You receive real-time responses based on actual inputs and live transaction flows\n        \n    - Use this mode only after successful sandbox testing\n        \n\n# Headers\n\nEvery API call must include specific headers for authentication, security, and proper request handling. Below is a breakdown of the required headers and their purposes:\n\n1. **Content-Type**\n    \n\n```\nContent-Type: application/json\n\n ```\n\n- Informs the server that the body of the request is in JSON format\n    \n- Required for all requests\n    \n\n**2\\. Authorization**\n\n``` json\nAuthorization: Bearer {api_key}\n\n ```\n\n- This header contains the API key assigned to you\n    \n- It authenticates the request and confirms that the call is made by an authorized client Your system\n    \n- Format: `Bearer {{your_api_key}}`\n    \n\n**3\\. Signature**\n\n``` json\nSignature: {{MD5Hash(request_ref;client_secret)}}\n\n ```\n\n- Ensures integrity of the request\n    \n- Generated using an MD5 hash function\n    \n- To compute the signature:\n    \n    - Concatenate the `request_ref` (a unique reference for every API call) and your `client_secret` separated by a semi colon `(;)`.\n        \n    - Apply the MD5 hashing function to the concatenated string\n        \n- This hashed value is then sent as the `Signature` header\n    \n- Purpose:\n    \n    - To verify that the request originates from a trusted source\n        \n    - Serves as a second layer of security by “signing” the request\n        \n\n**Example Header format**  \nYour complete header for evey single call will look like\n\n``` json\nContent-Type:application/json\nAuthorization:Bearer {{api_key}}\nSignature:{{MD5Hash(request_ref;client_secret)}}\n\n ```\n\n#### Notes\n\n- **request_ref**: A unique identifier generated for every API call. No two requests should have the same reference\n    \n- The server validates the `Signature` by regenerating the hash internally and comparing it with the one provided\n    \n- If the values do not match, the request will be rejected\n    \n\n# Encryption of `secure` element\n\nAs mentioned, the `auth.secure` enlement needs to contain the encrypted value of authorization details or customer credentials. e.g. card details. Encrypt the value using the Triple DES Encryption algorithm with your client application secret key as the encryption key.\n\nE.g.\n\n#### When it's a `card`, it should be:\n\n```\nTripleDES.encrypt(\"{card.Pan};{card.Cvv};{card.Exp_MMyy};{card.Pin}\",secretKey)\n\n ```\n\n#### If it's `bank.account` , it should be:\n\n```\nTripleDES.encrypt(\"{accountNumber};{bankCBNCode}\",secretKey)\n\n ```\n\n#### If it's `wallet` , it should be:\n\n```\nTripleDES.encrypt(\"{walletNumber};{providerCode}\",secretKey)\n\n ```\n\n#### If it's `basic` , it should be:\n\n```\nTripleDES.encrypt(\"{userName};{password}\",secretKey)\n\n ```\n\n#### If it's `custom` , it should be:\n\n```\nTripleDES.encrypt(\"{ref}\",secretKey)\n\n ```\n\n#### **The complete** **`auth`** **object**\n\nUsing the above, the full object could look like this:\n\n``` json\n\"type\": \"bank.account\",\n\"secure\": TripleDES.encrypt(\"{account_number};{bankcode}\", secretKey),\n\"auth_provider\": \"Nokrin\"\n\n ```\n\n#### Sample encryption in Java\n\n``` java\nMessageDigest md = MessageDigest.getInstance(\"md5\");\nbyte[] digestOfPassword = md.digest(key.getBytes(\"UTF-16LE\"));\nbyte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);\nfor (int j = 0, k = 16; j < 8;) {\n    keyBytes[k++] = keyBytes[j++];\n}\nSecretKey secretKey = new SecretKeySpec(keyBytes, 0, 24, \"DESede\");\nIvParameterSpec iv = new IvParameterSpec(new byte[8]);\nCipher cipher = Cipher.getInstance(\"DESede/CBC/PKCS5Padding\");\ncipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);\nbyte[] plainTextBytes = toBeEncrypted.getBytes(\"UTF-16LE\");\nbyte[] cipherText = cipher.doFinal(plainTextBytes);\nString output = new String(Base64.encodeBase64(cipherText));\nreturn output;\n\n ```\n\n#### Sample encryption in C-Sharp\n\n``` csharp\nstring encryptedText = \"\";\nMD5 md5 = new MD5CryptoServiceProvider();\nTripleDES des = new TripleDESCryptoServiceProvider();\ndes.KeySize = 128;\ndes.Mode = CipherMode.CBC;\ndes.Padding = PaddingMode.PKCS7;\nbyte[] md5Bytes = md5.ComputeHash(Encoding.Unicode.GetBytes(key));\nbyte[] ivBytes = new byte[8];\ndes.Key = md5Bytes;\ndes.IV = ivBytes;\nbyte[] clearBytes = Encoding.Unicode.GetBytes(TextToEncrypt);\nICryptoTransform ct = des.CreateEncryptor();\nusing (MemoryStream ms = new MemoryStream())\n{\n    using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))\n    {\n        cs.Write(clearBytes, 0, clearBytes.Length);\n        cs.Close();\n    }\n    encryptedText = Convert.ToBase64String(ms.ToArray());\n}\nreturn encryptedText;\n\n ```\n\n#### Sample encryption in PHP\n\n``` php\nfunction EncryptV2($encryption_key,$data)\n{\n    $source = mb_convert_encoding($encryption_key, 'UTF-16LE', 'UTF-8');\n    $key = md5($source, true);\n    $key .= substr($key, 0, 8);\n     // a 128 bit (16 byte) key\n     // append the first 8 bytes onto the end\n    //Pad for PKCS7\n    $block = mcrypt_get_block_size('tripledes', 'cbc');\n    $len = strlen($data);\n    $padding = $block - ($len % $block);\n    $data .= str_repeat(chr($padding),$padding);\n    $iv =  \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n    $encData = mcrypt_encrypt('tripledes', $key, $data, 'cbc',$iv);\n    echo base64_encode($encData);\n}\n\n ```\n\n#### Sample encryption in Node.js\n\n``` typescript\nconst crypto = require('crypto');\nfunction encrypt(sharedKey, plainText) {\n    const bufferedKey = Buffer.from(sharedKey, 'utf16le');\n    const key = crypto.createHash('md5').update(bufferedKey).digest();\n    const newKey = Buffer.concat([key, key.slice(0, 8)]);\n    const IV = Buffer.alloc(8, '\\0');\n    const cipher = crypto.createCipheriv('des-ede3-cbc', newKey, IV).setAutoPadding(true);\n    return cipher.update(plainText, 'utf8', 'base64') + cipher.final('base64');\n}\n\n ```\n\n# Request payload structure\n\nEvery API request uses a common payload structure. This ensures consistency across services and reduces integration effort. The payload is divided into standard objects, each serving a specific purpose\n\n``` json\n{\n    \"request_ref\": \"{{request-ref}}\",\n    \"request_type\": \"get rates\",\n    \"auth\": {\n        \"type\": null,\n        \"secure\": null,\n        \"auth_provider\": \"Nokrin\"\n    },\n    \"transaction\": {\n        \"mock_mode\": \"Live\",\n        \"transaction_ref\": \"{{transaction-ref}}\",\n        \"transaction_desc\": \"geting the rate from a specific IMTO\",\n        \"transaction_ref_parent\": null,\n        \"amount\": 0,\n        \"customer\": {\n            \"customer_ref\": \"{{customer_ref}}\",\n            \"firstname\": \"{{customer_firstname}}\",\n            \"surname\": \"{{customer_surname}}\",\n            \"email\": \"{{customer_email}}\",\n            \"mobile_no\": \"{{customer_mobile_no}}\"\n        },\n        \"meta\": {\n            \"biller_code\": \"{{biller_code}}\",\n            \"from\": \"USD\",\n            \"to\": \"NGN\"\n        },\n        \"details\": {\n            \"media_url\": null,\n            \"media_type\": null,\n            \"media_filename\": null\n        }\n    }\n}\n\n ```\n\n## **Top level fields**\n\n| **Field** | **Type** | **Required?** | **Description** |\n| --- | --- | --- | --- |\n| request_ref | String | Yes | Unique reference ID for this API call. Must be unique for every request. |\n| request_type | String | Yes | Defines the type of request. Effectively mapping to the function or service you are looking to invoke |\n| auth | Object | Yes | Contains authentication information (provider, type, secure value). |\n| transaction | Object | Yes | Holds transaction-specific details like reference, amount, customer info. |\n\n## Auth object\n\n| **Field** | **Type** | **Required?** | **Descriptional** |\n| --- | --- | --- | --- |\n| type | String/null | Can be set to `null` | Authentication type other service. For mandate check,get_bank, may be null. |\n| secure | String/null | Can be set to `null` | Encrypted authorization value. May be null if not applicable. This contains any information that holds unique tokens (e.g. card details) and has to be encrypted. \\[details [here](#encryption-of-secure-element)\\] |\n| auth_provider | String | Yes | Identifies the underlying provider that should execute the function. Use `Nokrin` |\n\n## Transaction object\n\n| **Field** | **Type** | **Required?** | **Description** |\n| --- | --- | --- | --- |\n| mock_mode | String | Yes | Defines the simulation mode for testing. Example: \"Inspect\" |\n| transaction_ref | String | Yes | Unique reference for this transaction. Must be unique for each request and transaction. You could simply reuse the request_ref here |\n| transaction_desc | String | Yes | Short description of the transaction purpose. Example: \"Check active mandates\" |\n| transaction_ref_parent | String/Null | Can be set to `null` | Optional reference to a parent transaction (for nested or linked transactions). |\n| amount | Number | Yes | Amount involved in the transaction. Use 0 if the transaction does not involve payment.  <br>  <br>This has to always be in lower denomination |\n| customer | Object | Yes | Contains customer-specific information (see below). |\n| meta | Object | No | Optional metadata related to the transaction (e.g., biller code, category). |\n| details | Object | No | Additional transaction-specific details; can be empty if not applicable. |\n\n## **Customer object**\n\nThe `customer` object stores information to uniquely identify and contact the customer. **Fields are optional depending on the service being called**. If not required, they can be left as empty strings (`\"\"`)\n\n| **Field** | **Type** | **Required?** | **Description** |\n| --- | --- | --- | --- |\n| customer_ref | String | Yes | Unique customer identifier. Always advised to use the 13-digit phone number starting with 234. Example: 2348022222222 |\n| firstname | String | No | Customer first name. Can be left as \"\" if not required by the service |\n| surname | String | No | Customer last name. Can be left as \"\" if not required |\n| email | String | No | Customer email address. Can be left as \"\" if not required |\n| mobile_no | String | No | Customer mobile phone number. Can be left as \"\" if not required |\n\n## Meta object\n\nThe `meta` object is **optional** and can contain extra contextual information for the transaction depending on the service.\n\n| **Field** | **Type** | **Requirement** | **Description** |\n| --- | --- | --- | --- |\n| biller_code | String | No | Code identifying the biller or IMTO or service provider. Example: \"000019\" |\n\n**Details Object**\n\n- The `details` object can contain additional information relevant to the transaction.\n    \n- It can be empty (`{}`) if no extra details are needed.\n    \n\n# Response payload structure\n\nFor all responses, you'd get a JSON object in the body of the response you receive. All payloads have the following high level construct:\n\n``` json\n    {\n        \"status\": \"Successful\",\n        \"message\": \"Transaction processed successfully\",\n        \"data\": {\n            \"provider_response_code\": \"00\",\n            \"provider\": \"DemoProvider\",\n            \"errors\": [],\n            \"error\": {},\n            \"provider_response\": {\n                \"reference\": \"000022200225154318222333334432\",\n                \"field_key\":\"field_value\",\n                \"field_key\":\"field_value\",\n                \"field_etc\": \"3056433222\",\n                \"meta\":{\n                    \"fee_flat\": 0,\n                    \"fee_percent\": 0,\n                    \"commission_flat\": 0,\n                    \"commission_percent\": 0,\n                    \"field_key\":\"field_value\",\n                    \"field_key\":\"field_value\"\n                }\n            }\n        }\n    }\n\n ```\n\n- **status**: Indicates the state of the request, whether successful, failed or anything in between\n    \n- **message**: Provides a text description of the state of the request and at times a message for the customer\n    \n- **data**: Will contain much more details of the outcome of the request. The values within this could vary by request type or endpoint called but some standard elements would be in almost all calls\n    \n- **provider_response_code**: The actual response code received from the underlying provider, e.g. `00` for Quickteller\n    \n- **provider_response**: This contains the actual response from the provider, specific to the actual operation you are trying to perform. The elements here will vary based on the operation. This is the main area of interest.\n    \n- **provider**: The provider that was used to process the request\n    \n- **errors**: In case of a failed transaction, this contains the lists of errors that occurred while processing the transaction\n    \n- **error**: This contains the most important error that hinders the successful completion of the transaction.  \n    We highly recommend that developers use the Errors field to determine the result of an API call. As an empty Errors node indicates a successful transaction.\n    \n\n**NOTE**: Some API calls may have response elements that are only applicable to those API calls. You will see examples in the provided postman collection and across the documentation.\n\n# Standard status codes\n\n- **Successful**: For all requests that were successfully processed\n    \n- **Failed**: If a request fails. Read the errors object(s)\n    \n- **WaitingForOTP**: If a request requires OTP validation for completion.\n    \n- **PendingValidation**: If a request requires other information to be supplied for completion.\n    \n- **Processing**: If a transaction request is still in a processing state and needs to be subsequently queried.\n    \n- **OptionsDelivered**: Applicable only for services that support some form of options processing.\n    \n- **InvalidID**: If an ID being looked up by service is not valid.\n    \n- **Fraud**: If a request is flagged as suspicious.\n    \n- **Duplicate**: If a similar request has been made earlier within a stipulated time frame of 5 minutes.\n    \n- **PendingFulfilment**: The transaction requires extra steps from the customer.\n    \n- **\\[Anything else\\]**: This would vary per endpoint called. Applicable values would be in the documentation for that endpoint.\n    \n\n# HTTP Status Codes\n\n- **200**: Request was processed \"conclusively\". Not to be taken as a successful status. Always read the `response.status` object for actual processing status. Also note that the description field on the response can contain further steps to be carried on this transaction.\n    \n- **400**: Data validation error occurred due to inconsistent data supplied by the client\n    \n- **401**: Invalid request authorization, which might be due to invalid API key or the client is not registered for the service being accessed.\n    \n- **500**: An internal server error at our End, this should be reported if it persists","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"6358444","team":242895,"collectionId":"e1ff8b3f-b61a-4efb-8a8f-15c324eabce8","publishedId":"2sBXqGpggX","public":true,"publicUrl":"https://docs.nokrin.com","privateUrl":"https://go.postman.co/documentation/6358444-e1ff8b3f-b61a-4efb-8a8f-15c324eabce8","customColor":{"top-bar":"FFFFFF","right-sidebar":"213C49","highlight":"0A9BB9"},"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":"213C49","highlight":"0A9BB9"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"213C49","highlight":"0A9BB9"}}]}},"version":"8.10.1","publishDate":"2026-04-24T06:41:52.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/a27a425324c006dd1f53f07becf2d5c16478567dd1dde25001728b716c749aa8","favicon":"https://res.cloudinary.com/postman/image/upload/v1547191824/team/zjhn0lwn04wuxbe90rhq.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.nokrin.com/view/metadata/2sBXqGpggX"}