{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"681ef0ea-2f28-4bac-9ab4-996f92f3fa9c","name":"RW Link API","description":"## Overview\n\nThe RWLink Web API is a simple REST API that allows 3rd party applications to integrate with RFID scanners.\n\nIn order to use the this API, you need to have the RWLink application installed on the machine that needs to connect to the RFID scanner. You can download the RWLink application from [here](https://irys-products.s3.ap-south-1.amazonaws.com/rwlink/release/RWLink.zip) and a user guide to the application from [here](https://irys-products.s3.ap-south-1.amazonaws.com/rwlink/documents/RWLink_User_Guide.pdf).\n\n## Integration Modes\n\nThe RWLink supports integration with all the following types of applications:\n\n1. Desktop applications (standalone or client-server)\n    \n2. Web applications\n    \n3. Desktop applications that are accessed using RDP\n    \n\nThe RWLink settings for RDP applications is different from web applications and desktop applications. These differences define 2 different modes of integration:\n\n1. Local\n    \n2. Cloud\n    \n\n#### Local Mode\n\n<u><b>Typically used by</b></u>: Desktop and Web applications\n\n<u><b>API base URL</b></u>: [<i><b>http://localhost:{port}</b></i>](http://localhost)_**:**_\n\nFor web applications, if you are using the RWLink in the \"Local\" integration mode, then the APIs must be invoked from the browser-side code.\n\n#### Cloud Mode\n\n<u><b>Typically used by</b></u>: Applications used over RDP\n\n<u><b>API base URL</b></u>: [https://link.irysgroup.com/irys-web-link/irys/link/](https://link.irysgroup.com/irys-web-link/irys/link/)\n\nWhile applications being used over RDP must necessarily be integrated in \"Cloud\" mode, desktop applications and webapplications can be used in either mode. But, \"Local\" mode is the preferred mode of integration.\n\n## API Operation\n\nOnce the RWLink has been setup, you can invoke the APIs listed in this document, to trigger various RFID actions.\n\nRFID scanning is inherently an asynchronous process, once scanning is triggered, the device will keep asynchrnously broadcasting scanned items until the scanning is stopped\n\nThe scanned data can be retrieved in 3 ways:\n\n1. Registering a webhook so that you can get realtime scanned data and error data.\n    \n2. Listening for realtime data over a websocket connection\n    \n3. An API call to get all the scanned tags since they were last cleared.\n    \n\n<u>Note</u>: If you are using TE tags then you MUST use the Websocket method of integration.\n\n#### Webhook Method\n\nIn this method, you will need to create your own API endpoint and register it with the RWLink using the \"addWebhook\" API.\n\nOnce registered, the RWLink will broadcast realtime scanned data to the registered webhooks. The format of the broadcast will be:\n\n``` json\n{\n    \"clientID\": \"IRYS_CONSOLE\",\n    \"port\": 0,\n    \"statucCode\": 0,\n    \"statusMessage\": \"SUCCESS\",\n    \"host\": \"00:04:3E:4C:2B:40\",\n    \"tagCount\": 1,\n    \"tags\": [\"313131313131313131313131\"]\n}\n\n ```\n\n``` xml\n<irysXmlTagResponse>\n   <statusCode>0</statusCode>\n   <statusMessage>Success</statusMessage>\n   <port>0</port>\n   <clientID>IRYS_CONSOLE</clientID>\n   <tags>313131313131313131313131</tags>\n   <tagCount>1</tagCount>\n</irysXmlTagResponse>\n\n ```\n\nThe RWLink will also broadcast events to the webhooks. A sample of such an event is:\n\n``` json\n{\n    \"name\": \"SLOT\",\n    \"make\": \"FLATBED\",\n    \"macID\": \"192.168.1.102\",\n    \"eventCode\": \"10\",\n    \"description\": \"CONNECTED\"\n}\n\n ```\n\n``` xml\n<irysXmlEventResponse>\n   <statusCode>0</statusCode>\n   <port>0</port>\n   <clientID>IRYS_CONSOLE</clientID>\n   <host>00:04:3E:4C:2B:40</host>\n   <make>WAND</make>\n   <eventCode>10</eventCode>\n   <description>CONNECTED</description>\n</irysXmlEventResponse>\n\n ```\n\n<u>Note</u>: A complete list of events and their corresponding codes is mentioned below.\n\n#### Websocket Method\n\nThis is another method for catupring realtime scan data and events. In order to use this method you will need to create a connection to the RWLink websocket at _**ws://localhost:**_ and then capture realtime scanned data in the Javascript onMessage() callback. (Ref: [https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/message_event](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/message_event))\n\nWhen in \"Local\" mode, this is the fastest method of fetching realtime data and hence the preferred method. The scanned information received through this method, includes some additional data about the scan strength of each tag. The scan data format is:\n\n``` json\n{\n    \"name\": \"DEMO\",\n    \"make\": \"WAND\",\n    \"host\": \"00:04:3E:4C:2C:3A\",\n    \"rssi\": 0,\n    \"timestamp\": \"09-02-2026 17:22:32\",\n    \"tagCount\": 1,\n    \"tags\": [\n        {\n            \"tag\": \"202502100093\",\n            \"rssi\": 0,\n            \"location\": \"DEMO\",\n            \"isTampered\": false\n        }\n    ]\n}\n\n ```\n\nThe event broadcast format is the same as the webhook method above.\n\n<u><b>Note</b></u>**:  \n1\\. This is a lossy connection and once you stop scanning, you should invoke the \"getScannedItems\" API once to ensure that no scanned data was lost over the socket.**\n\n#### API Method\n\nYou can invoke the \"getScannedItems\" API every few seconds in a loop to retireve the scanned items. This is a very slow an inefficient way of fetching the scanned data since each time you call the API it will return the complete list of items scanned since the last \"clear\" API call. So if you are scanning thousands of tags, each invocation of this API will take a very long time to return the data.\n\nAlso, this method does not return any runtime error information or any of the scanner events.\n\n#### List of Events\n\n| **Event name** | **Event code** |\n| --- | --- |\n| CONNECTED | 10 |\n| DISCONNECTED | 11 |\n| START_SCAN | 7 |\n| STOP_SCAN | 8 |\n| SEARCH | 5 |\n| CLEAR | 6 |\n| POWER_CHANGE | 9 |\n\n#### List of Device Types\n\n1. WAND\n    \n2. SLING (Windows only)\n    \n3. SLING_2\n    \n4. PADDLE\n    \n5. SURFACE_BT (Windows only)\n    \n6. SURFACE_USB (Windows only)\n    \n7. SURFACE_MINI (Windows only)\n    \n8. SURFACE (Mac only)\n    \n9. SLIM (Windows only)\n    \n10. RFD90 (Windows only)\n    \n11. TUNNEL (Windows only)\n    \n12. FLATBED (Windows only)\n    \n13. SLOT (Windows only)\n    \n\n#### Important Downloads\n\n| **Artifact** | **Link** |\n| --- | --- |\n| RWLink Application | [downoad here](https://irys-products.s3.ap-south-1.amazonaws.com/rwlink/release/RWLink.zip) |\n| RWLink User Guide | [download here](https://irys-products.s3.ap-south-1.amazonaws.com/rwlink/documents/RWLink_User_Guide.pdf) |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"31747342","team":5893101,"collectionId":"681ef0ea-2f28-4bac-9ab4-996f92f3fa9c","publishedId":"2s9YkjA3Uh","public":true,"publicUrl":"https://rwlink-docs.irysgroup.com","privateUrl":"https://go.postman.co/documentation/31747342-681ef0ea-2f28-4bac-9ab4-996f92f3fa9c","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"1d4f7b"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/5a4f7dbe-d4a6-4f18-b9ec-18cb246f0dcc/aXJ5cy1sb2dvLXRtKHdoaXRlLXRleHQpLTIgMS5wbmc=","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"1d4f7b"}},{"name":"light","logo":"https://content.pstmn.io/cd59edc8-8ab8-4e85-9e12-2dbf080d58b6/VXBkYXRlZCBJcnlzIExvZ28ucG5n","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"1d4f7b"}}]}},"version":"8.10.0","publishDate":"2024-07-15T10:34:32.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/cd59edc8-8ab8-4e85-9e12-2dbf080d58b6/VXBkYXRlZCBJcnlzIExvZ28ucG5n","logoDark":"https://content.pstmn.io/5a4f7dbe-d4a6-4f18-b9ec-18cb246f0dcc/aXJ5cy1sb2dvLXRtKHdoaXRlLXRleHQpLTIgMS5wbmc="}},"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/a530abb5a04747143a6d327ba6cf71769554acc33712e7c2ee34c7eeac5416b8","favicon":"https://irysgroup.com/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://rwlink-docs.irysgroup.com/view/metadata/2s9YkjA3Uh"}