{"info":{"_postman_id":"a0a09bb5-1a05-4d54-9a91-f07470298467","name":"NativeBridge Public API","description":"<html><head></head><body><p>Welcome to the <strong>NativeBridge Public API</strong> documentation.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"41713518","collectionId":"a0a09bb5-1a05-4d54-9a91-f07470298467","publishedId":"2sAYkGLf4d","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-03-21T11:16:59.000Z"},"item":[{"name":"APIs","item":[{"name":"List Devices","id":"ed88aa8c-5d89-45e3-af5e-180d1db9d732","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX-XXXX-XXXX-XXXX","type":"text"}],"url":"https://api.nativebridge.io/v1/devices","description":"<h3 id=\"description\">Description</h3>\n<p>This endpoint retrieves a list of available devices (both real and emulated) that can be used for testing.</p>\n","urlObject":{"protocol":"https","path":["v1","devices"],"host":["api","nativebridge","io"],"query":[],"variable":[]}},"response":[{"id":"e3e94583-be0c-450d-b653-1daed484c363","name":"Successful Response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX-XXXX-XXXX-XXXX","type":"text"}],"url":"https://api.nativebridge.io/v1/devices"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"date","value":"Fri, 21 Mar 2025 08:42:16 GMT"},{"key":"server","value":"uvicorn"},{"key":"content-length","value":"1481"},{"key":"content-type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": \"1234567890abcdef12345678\",\n            \"type\": \"ios\",\n            \"osVersion\": \"16\",\n            \"modelName\": \"iPhone 14\",\n            \"isEmulator\": false,\n            \"userPlan\":\"paid\"\n        },\n        {\n            \"id\": \"abcdef1234567890abcdef12\",\n            \"type\": \"android\",\n            \"osVersion\": \"13\",\n            \"modelName\": \"Galaxy S23\",\n            \"isEmulator\": false,\n            \"userPlan\":\"all\"\n        },\n        {\n            \"id\": \"fedcba0987654321fedcba09\",\n            \"type\": \"android\",\n            \"osVersion\": \"12\",\n            \"modelName\": null,\n            \"isEmulator\": true,\n            \"userPlan\":\"all\"\n        },\n        {\n            \"id\": \"456789abcdef0123456789ab\",\n            \"type\": \"android\",\n            \"osVersion\": \"14\",\n            \"modelName\": \"Pixel 7\",\n            \"isEmulator\": false,\n            \"userPlan\":\"paid\"\n        }\n    ]\n}\n"}],"_postman_id":"ed88aa8c-5d89-45e3-af5e-180d1db9d732"},{"name":"Upload Application / Generate Magic Link","id":"515c218f-a989-4513-af7b-3d4d4210530a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"body":{"mode":"formdata","formdata":[{"type":"file","contentType":"application/vnd.android.package-archive","key":"file","value":null,"disabled":true},{"type":"text","key":"allowedUsers","value":"","disabled":true},{"key":"apkUrl","value":"","type":"text","uuid":"240cfe87-491e-4c25-bb50-390af591948f","disabled":true},{"key":"accessType","value":"","type":"text","uuid":"e403db99-635b-4bd9-bed5-01f5e9f55039","disabled":true}]},"url":"https://api.nativebridge.io/v1/application","description":"<h3 id=\"description\">Description</h3>\n<p>This endpoint allows users to upload an APK or AAB file directly or provide a public URL from which the file can be fetched. The uploaded application will be processed, and a sharable magic link will be generated.</p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>file</code></td>\n<td><code>UploadFile</code></td>\n<td>Optional</td>\n<td>The APK/AAB file to be uploaded. Either <code>file</code> or <code>apkUrl</code> must be provided.</td>\n</tr>\n<tr>\n<td><code>apkUrl</code></td>\n<td><code>string</code></td>\n<td>Optional</td>\n<td>A public URL to fetch the application file. Either <code>file</code> or <code>apkUrl</code> must be provided.</td>\n</tr>\n<tr>\n<td><code>accessType</code></td>\n<td><code>string</code></td>\n<td>Optional</td>\n<td>Defines whether the app is <code>public</code> or <code>private</code>. Default is <code>public</code>.</td>\n</tr>\n<tr>\n<td><code>allowedUsers</code></td>\n<td><code>array of strings</code></td>\n<td>Optional</td>\n<td>List of emails allowed to access the app when <code>access_type</code> is <code>private</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>If both <code>file</code> and <code>apkUrl</code> are provided, the <code>file</code> takes precedence.</p>\n</li>\n<li><p><code>If accessType</code> is set to <code>private</code> and <code>allowedUsers</code> is not provided, only the uploader will have access.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["v1","application"],"host":["api","nativebridge","io"],"query":[],"variable":[]}},"response":[{"id":"a43c6055-db2b-4691-9825-154012b29455","name":"Successful Response","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"body":{"mode":"formdata","formdata":[{"type":"file","contentType":"application/vnd.android.package-archive","key":"file","value":null},{"type":"text","key":"allowedUsers","value":"xyz@gmail.com"},{"key":"apkUrl","value":"https://your-public-apk-url","type":"text","uuid":"240cfe87-491e-4c25-bb50-390af591948f","disabled":true},{"key":"accessType","value":"private","type":"text","uuid":"e403db99-635b-4bd9-bed5-01f5e9f55039"}]},"url":"https://api.nativebridge.io/v1/application"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"date","value":"Fri, 21 Mar 2025 12:46:17 GMT"},{"key":"server","value":"uvicorn"},{"key":"content-length","value":"92"},{"key":"content-type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": \"47nL\",\n        \"magicLink\": \"https://nativebridge.io/app/47nL\",\n        \"accessType\": \"public\",\n        \"version\": \"1.0\"\n    }\n}"}],"_postman_id":"515c218f-a989-4513-af7b-3d4d4210530a"},{"name":"List User Uploaded Applications","id":"94917bc9-854e-4025-bc98-3ead750b249d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"url":"https://api.nativebridge.io/v1/applications","description":"<h3 id=\"description\">Description</h3>\n<p>This endpoint retrieves a list of all applications uploaded by the authenticated user, along with their details such as app name, package name, version, and access type.</p>\n","urlObject":{"protocol":"https","path":["v1","applications"],"host":["api","nativebridge","io"],"query":[],"variable":[]}},"response":[{"id":"0a92c868-0d08-4ecd-a4fb-6cfb4080763f","name":"Successfull Response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"url":"https://api.nativebridge.io/v1/applications"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"date","value":"Fri, 21 Mar 2025 12:27:01 GMT"},{"key":"server","value":"uvicorn"},{"key":"content-length","value":"2379"},{"key":"content-type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"<string>\",\n      \"magicLink\": \"<string>\",\n      \"access_type\":\"public\",\n      \"createdAt\": \"<dateTime>\",\n      \"updatedAt\": \"<dateTime>\",\n      \"applicationType\": \"<string>\",\n      \"name\": \"<string>\",\n      \"manifestName\": \"<string>\",\n      \"packageName\": \"<string>\",\n      \"version\": \"<string>\",\n      \"views\": \"<integer>\",\n      \"upvotes\": \"<integer>\",\n      \"downloads\": \"<integer>\",\n      \"iconImage\": \"<string>\",\n      \"defaultDeviceId\": \"<string>\",\n      \"applicationMetaData\": \"<object>\",\n      \"versionedData\":\"<object>\"\n    },\n    {\n      \"id\": \"<string>\",\n      \"magicLink\": \"<string>\",\n      \"access_type\":\"public\",\n      \"createdAt\": \"<dateTime>\",\n      \"updatedAt\": \"<dateTime>\",\n      \"applicationType\": \"<string>\",\n      \"name\": \"<string>\",\n      \"manifestName\": \"<string>\",\n      \"packageName\": \"<string>\",\n      \"version\": \"<string>\",\n      \"views\": \"<integer>\",\n      \"upvotes\": \"<integer>\",\n      \"downloads\": \"<integer>\",\n      \"iconImage\": \"<string>\",\n      \"defaultDeviceId\": \"<string>\",\n      \"applicationMetaData\": \"<object>\",\n      \"versionedData\":\"<object>\"\n    }\n  ]\n}"}],"_postman_id":"94917bc9-854e-4025-bc98-3ead750b249d"},{"name":"Create Session","id":"5d4bb6f4-79a7-4f0d-8556-f0d14879073d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"deviceId\": \"<string>\",\n  \"apkId\": \"<string>\",  //optional\n  \"region\": \"ind\"     // optional: \"ind\" or \"us\" defaults to \"ind\" if not provided\n}","options":{"raw":{"language":"json"}}},"url":"https://api.nativebridge.io/v1/device/session/android","description":"<h3 id=\"description\">Description</h3>\n<p>This endpoint creates a session for an Android device, optionally launching a specific APK.</p>\n","urlObject":{"protocol":"https","path":["v1","device","session","android"],"host":["api","nativebridge","io"],"query":[],"variable":[]}},"response":[{"id":"50455fbc-0aa0-4702-90a7-18d319eca35d","name":"Successful Response","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"deviceId\": \"67a642531a4aa535498192f8\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.nativebridge.io/v1/device/session/android"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"date","value":"Fri, 21 Mar 2025 10:49:19 GMT"},{"key":"server","value":"uvicorn"},{"key":"content-length","value":"70"},{"key":"content-type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"sessionId\": \"<string>\",\n        \"sessionUrl\":\"<string>\",\n        \"message\": \"Session created successfully\"\n    }\n}"}],"_postman_id":"5d4bb6f4-79a7-4f0d-8556-f0d14879073d"},{"name":"Session Details","id":"8155494d-1dc0-48f3-b925-6ac40598ffbf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"url":"https://api.nativebridge.io/v1/session/:sessionId","description":"<h3 id=\"description\">Description</h3>\n<p>This endpoint retrieves details of a session, including its status, queue position (if applicable), and connection details if the session is running.</p>\n<h3 id=\"session-info-explained\">Session Info Explained</h3>\n<ul>\n<li><p><strong>sessionId</strong> – Unique ID for the session you created.</p>\n</li>\n<li><p><strong>status</strong> – Current state of the session (e.g., <code>running</code>, <code>inqueue, completed</code>).</p>\n</li>\n<li><p><strong>apkInstallationStatus</strong> – Shows whether your app was installed successfully.</p>\n</li>\n<li><p><strong>timeLeftInSeconds</strong> – How much time is left before the session auto-ends.</p>\n</li>\n<li><p><strong>deviceId</strong> – ID of the device being used in the session.</p>\n</li>\n<li><p><strong>adbConnectString</strong> – Use this string to connect to the device using ADB from your local machine.</p>\n</li>\n<li><p><strong>sessionUrl</strong> – Shareable link to open and control the live session in the browser.</p>\n</li>\n<li><p><strong>position</strong> – Your spot in the queue (if the session is not yet started).</p>\n</li>\n<li><p><strong>totalQueued</strong> – Total number of sessions currently queued.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["v1","session",":sessionId"],"host":["api","nativebridge","io"],"query":[],"variable":[{"type":"any","value":"","key":"sessionId"}]}},"response":[{"id":"97b601bb-6a8a-47e3-9947-5b945b714baa","name":"Successfule Response(Running/completed)","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"url":{"raw":"https://api.nativebridge.io/v1/session/:sessionId","protocol":"https","host":["api","nativebridge","io"],"path":["v1","session",":sessionId"],"variable":[{"key":"sessionId","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"date","value":"Fri, 21 Mar 2025 12:19:20 GMT"},{"key":"server","value":"uvicorn"},{"key":"content-length","value":"185"},{"key":"content-type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"sessionId\": \"<string>\",\n    \"status\": \"running\",\n    \"apkInstallationStatus\": \"<string>\",\n    \"timeLeftInSeconds\": \"<number>\",\n    \"deviceId\": \"<string>\",\n    \"adbConnectString\": \"<string>\",\n    \"sessionUrl\": \"<string>\"\n  }\n}"},{"id":"433d26a9-40a6-40e9-8b6f-ea9091ecacfc","name":"Successful Response(InQueue Session)","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"url":{"raw":"https://api.nativebridge.io/v1/session/:sessionId","protocol":"https","host":["api","nativebridge","io"],"path":["v1","session",":sessionId"],"variable":[{"key":"sessionId","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"sessionId\": \"<string>\",\n        \"position\": 3,\n        \"totalQueued\": 10,\n        \"status\": \"inqueue\"\n    }\n}\n"}],"_postman_id":"8155494d-1dc0-48f3-b925-6ac40598ffbf"},{"name":"Kill Session","id":"40550b48-9643-4420-ba95-1bea6af290b8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"url":"https://api.nativebridge.io/v1/session/:sessionId","description":"<h3 id=\"description\">Description</h3>\n<p>This endpoint is used to delete a specific session identified by the session ID.</p>\n","urlObject":{"protocol":"https","path":["v1","session",":sessionId"],"host":["api","nativebridge","io"],"query":[],"variable":[{"type":"any","value":"","key":"sessionId"}]}},"response":[{"id":"3062b9ae-53bf-434a-b6a6-65e9c518974b","name":"Successful Response","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"X-Api-Key","value":"Nb-XXXX.XXXX.XXXX.XXXX","type":"text"}],"url":"https://api.nativebridge.io/v1/session/Mat7"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"date","value":"Fri, 21 Mar 2025 12:11:33 GMT"},{"key":"server","value":"uvicorn"},{"key":"content-length","value":"62"},{"key":"content-type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"<string>\",\n  \"sessionId\": \"<string>\"\n}"}],"_postman_id":"40550b48-9643-4420-ba95-1bea6af290b8"},{"name":"New Request","id":"b6af2833-de28-486e-a1e2-9c90d146020a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-API-Key","value":"your_api_key_here"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"My Test Project\",\n    \"description\": \"E2E tests for mobile app\"\n  }","options":{"raw":{"language":"json"}}},"url":"https://api.nativebridge.io/v1/projects","description":"<h3 id=\"create-project\">Create Project</h3>\n<p>Create a new test project.</p>\n","urlObject":{"protocol":"https","path":["v1","projects"],"host":["api","nativebridge","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"b6af2833-de28-486e-a1e2-9c90d146020a"},{"name":"List User Projects","id":"215639ce-e3de-45a8-a745-06fbe20fcf77","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-API-Key","value":"your_api_key_here"}],"url":"https://api.nativebridge.io/v1/projects","description":"<h3 id=\"list-projects\">List Projects</h3>\n<p>Retrieve all your projects.</p>\n","urlObject":{"protocol":"https","path":["v1","projects"],"host":["api","nativebridge","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"215639ce-e3de-45a8-a745-06fbe20fcf77"},{"name":"New Request","id":"07e8a823-983b-470a-9b9c-cf1c80b963be","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-API-Key","value":"your_api_key_here"}],"url":"https://api.nativebridge.io/v1/projects/:projectId/files","description":"<h3 id=\"get-project-files\">Get Project Files</h3>\n<p>List all files and folders in a project.</p>\n","urlObject":{"protocol":"https","path":["v1","projects",":projectId","files"],"host":["api","nativebridge","io"],"query":[],"variable":[{"type":"any","value":"","key":"projectId"}]}},"response":[],"_postman_id":"07e8a823-983b-470a-9b9c-cf1c80b963be"},{"name":"New Request","id":"3eee05fe-0440-40d1-95a8-3a29a8161df6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-API-Key","value":"your_api_key_here"}],"body":{"mode":"formdata","formdata":[{"type":"file","key":"files","value":null}]},"url":"https://api.nativebridge.io/v1/projects/:projectId/import","description":"<h3 id=\"upload-test-files\">Upload Test Files</h3>\n<p>Upload test files to a project.</p>\n","urlObject":{"protocol":"https","path":["v1","projects",":projectId","import"],"host":["api","nativebridge","io"],"query":[],"variable":[{"type":"any","value":"","key":"projectId"}]}},"response":[],"_postman_id":"3eee05fe-0440-40d1-95a8-3a29a8161df6"}],"id":"85a3e264-5448-4b80-b933-7f7f944c2185","description":"<h2 id=\"authentication--api-key-usage\">Authentication &amp; API Key Usage</h2>\n<p>To use the NativeBridge APIs, you must authenticate using an API key. Follow these steps to obtain and use your API key:</p>\n<ol>\n<li><p><strong>Create an Account</strong>: Visit <a href=\"https://nativebridge.io\">NativeBridge.io</a> and sign up for an account.</p>\n</li>\n<li><p><strong>Generate an API Key</strong>: Navigate to the <strong>API Keys</strong> section in your dashboard and create a new API key.</p>\n</li>\n<li><p><strong>Use the API Key</strong>:</p>\n<ul>\n<li>Include the API key in every request using the <strong>X-Api-Key</strong> header.</li>\n</ul>\n</li>\n</ol>\n","_postman_id":"85a3e264-5448-4b80-b933-7f7f944c2185"}],"variable":[{"key":"baseUrl","value":"","type":"default"}]}