Quotes quantity more Lusor Phones (default 1) on the workspace’s
Phone plan, as one change: the
prorated amount charged today for the rest of the current period,
and the next full invoice. Nothing is charged. The quote expires
after 10 minutes; confirm it with POST /devices/deploy.
Phones are deployed into the tenant’s Default workspace only; any
other workspace answers 409 default_workspace_only.
Where the new phone's Internet exits (ISO 3166-1 alpha-2, lowercase).
Defaults to us. One of rotating from
GET /v1/workspaces/{workspaceId}/internet/locations; any other
code answers 400 unsupported_country.
The connection type the phone is bought with. rotating births the
phone without a Static IP; persistent (and absent) gives it one
where the country is covered.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Lusor","description":"Run AI agents on real phones, or drive a phone directly, with the Lusor API.","colors":{"primary":"#111111","light":"#FAFAFA","dark":"#111111"},"logo":{"light":"https://mintcdn.com/lusor-ai/Ifu_dlUtLbDafp0r/images/lusor-logo-lightmode@2x.png?fit=max\u0026auto=format\u0026n=Ifu_dlUtLbDafp0r\u0026q=85\u0026s=977cb89acbdf111277711fe79f404fd5","dark":"https://mintcdn.com/lusor-ai/s7jsDGcgmdq30-2k/images/lusor-logo-darkmode@2x.png?fit=max\u0026auto=format\u0026n=s7jsDGcgmdq30-2k\u0026q=85\u0026s=1a44f07d6684fb79a9ae4d593a5b924d","href":"https://lusor.ai"},"favicon":"https://mintcdn.com/lusor-ai/Plbn5wBfbIBBjl9c/favicon.png?fit=max\u0026auto=format\u0026n=Plbn5wBfbIBBjl9c\u0026q=85\u0026s=48f99be162e5dd4fe61028a9631f55f0","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"]}},"navbar":{"links":[{"href":"https://lusor.ai/pricing","label":"Pricing"}],"primary":{"type":"button","label":"Open Lusor","href":"https://app.lusor.ai"}},"footer":{"socials":{"website":"https://lusor.ai"}},"icons":{"library":"fontawesome"},"contextual":{"options":["assistant","copy","view","download-spec","chatgpt","claude"],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lusor-ai","hasAudioNarration":false,"actualSubdomain":"lusor-ai","customDomains":["docs.lusor.ai"],"gitSource":{"type":"github","owner":"lusor-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6af3665a77bbd85befb3aca1","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"API reference","count":92},{"language":"default","tag":"Endpoints","count":91},{"language":"default","tag":"Developers","count":26},{"language":"default","tag":"Devices","count":22},{"language":"default","tag":"Sessions","count":17},{"language":"default","tag":"Phones","count":13},{"language":"default","tag":"DeviceVerbs","count":12},{"language":"default","tag":"Help Center","count":11},{"language":"default","tag":"Agents","count":11},{"language":"default","tag":"Agents \u0026 sessions","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/devices/preview-deploying-lusor-phones","slug":"/api-reference/devices/preview-deploying-lusor-phones","pageMetadata":{"title":"Preview deploying Lusor Phones","description":"Quotes `quantity` more Lusor Phones (default 1) on the workspace's\nPhone plan, as one change: the\nprorated amount charged today for the rest of the current period,\nand the next full invoice. Nothing is charged. The quote expires\nafter 10 minutes; confirm it with `POST /devices/deploy`.\n\nPhones are deployed into the tenant's Default workspace only; any\nother workspace answers 409 `default_workspace_only`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/deploy/preview","href":"/api-reference/devices/preview-deploying-lusor-phones","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Quotes \", _jsx(_components.code, {\n children: \"quantity\"\n }), \" more Lusor Phones (default 1) on the workspace’s\\nPhone plan, as one change: the\\nprorated amount charged today for the rest of the current period,\\nand the next full invoice. Nothing is charged. The quote expires\\nafter 10 minutes; confirm it with \", _jsx(_components.code, {\n children: \"POST /devices/deploy\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Phones are deployed into the tenant’s Default workspace only; any\\nother workspace answers 409 \", _jsx(_components.code, {\n children: \"default_workspace_only\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Preview deploying Lusor Phones","description":"Quotes `quantity` more Lusor Phones (default 1) on the workspace's\nPhone plan, as one change: the\nprorated amount charged today for the rest of the current period,\nand the next full invoice. Nothing is charged. The quote expires\nafter 10 minutes; confirm it with `POST /devices/deploy`.\n\nPhones are deployed into the tenant's Default workspace only; any\nother workspace answers 409 `default_workspace_only`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/deploy/preview","href":"/api-reference/devices/preview-deploying-lusor-phones","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"previewDeviceDeploy","summary":"Preview deploying Lusor Phones","description":"Quotes `quantity` more Lusor Phones (default 1) on the workspace's\nPhone plan, as one change: the\nprorated amount charged today for the rest of the current period,\nand the next full invoice. Nothing is charged. The quote expires\nafter 10 minutes; confirm it with `POST /devices/deploy`.\n\nPhones are deployed into the tenant's Default workspace only; any\nother workspace answers 409 `default_workspace_only`.\n","tags":["Devices"],"parameters":["d623ce9a-baa1-4e1c-a284-1b50e668db25"],"requestBody":"3fd38393-465d-46e4-8b63-c560c4073457","responses":{"200":"b2eabbe9-42ed-4977-9d48-c7973f93a674","400":"26038566-620c-4c9d-a44f-b8a79dce9ed1","401":"daf84608-a156-429f-94af-2b08b804cce1","402":"617862fb-78a1-410a-9ca4-97e092cd3a3a","403":"953b67c9-dbcd-4c33-a40b-171d08b1c821","404":"346e01bc-8d89-445a-9d9e-bab298533678","409":"268f9724-8a61-4191-bde3-e31a878a6170","503":"71998b72-977f-4d72-ba50-02510824c3ce"},"method":"post","type":"path","servers":["67414a81-b86b-4d15-b96f-3a390c272e81"],"security":["e990c9c7-7adf-4c43-a478-c17a739371f3","a66fdb89-a491-49fa-b34f-5bf4ba59f929"],"path":"/v1/workspaces/{workspaceId}/devices/deploy/preview","baseUrlOptions":["https://api.lusor.ai"],"title":"Preview deploying Lusor Phones","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d623ce9a-baa1-4e1c-a284-1b50e668db25":{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"Workspace UUID. Caller must have access.","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"Workspace UUID. Caller must have access."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"internetExitCountry":{"type":"string","pattern":"^[a-z]{2}$","description":"Where the new phone's Internet exits (ISO 3166-1 alpha-2, lowercase).\nDefaults to `us`. One of `rotating` from\n`GET /v1/workspaces/{workspaceId}/internet/locations`; any other\ncode answers 400 `unsupported_country`.\n","uniqueKey":"internetExitCountry","typeLabel":"string"},"internetConnection":{"type":"string","enum":["rotating","persistent"],"description":"The connection type the phone is bought with. `rotating` births the\nphone without a Static IP; `persistent` (and absent) gives it one\nwhere the country is covered.\n","uniqueKey":"internetConnection","typeLabel":"enum\u003cstring>"},"quantity":{"type":"integer","minimum":1,"maximum":100,"default":1,"description":"How many Lusor Phones to add. More than the App tier's free phone\nslots answers 402 `tier_phone_limit`; more than 100 phones on the\nplan answers 409.\n","uniqueKey":"quantity","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"internetExitCountry":"\u003cstring>","quantity":1}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"b2eabbe9-42ed-4977-9d48-c7973f93a674":{"description":"The quote","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","required":["previewId","quantity","currency","dueToday","creditToday","totalAtRenewal","expiresAt","internetExitCountry"],"properties":{"previewId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.previewId","typeLabel":"string\u003cuuid>"},"quantity":{"type":"integer","description":"Lusor Phones on the plan after the change.","isRequired":true,"uniqueKey":"data.quantity","typeLabel":"integer"},"currency":{"type":"string","enum":["usd"],"isRequired":true,"uniqueKey":"data.currency","typeLabel":"enum\u003cstring>"},"dueToday":{"type":"integer","description":"US cents charged when the change is confirmed (0 for a removal).","isRequired":true,"uniqueKey":"data.dueToday","typeLabel":"integer"},"creditToday":{"type":"integer","description":"US cents credited to the account balance when the change is confirmed (0 for a deploy).","isRequired":true,"uniqueKey":"data.creditToday","typeLabel":"integer"},"totalAtRenewal":{"type":"integer","description":"US cents of the next full invoice after the change.","isRequired":true,"uniqueKey":"data.totalAtRenewal","typeLabel":"integer"},"expiresAt":{"type":"integer","description":"Unix seconds after which the quote cannot be confirmed.","isRequired":true,"uniqueKey":"data.expiresAt","typeLabel":"integer"},"internetExitCountry":{"oneOf":[{"type":"string","description":"The new phone's Internet exit country; null for a removal.","isRequired":true,"uniqueKey":"data.internetExitCountry.oneOf.0","typeLabel":"string"},{"type":"null","description":"The new phone's Internet exit country; null for a removal.","isRequired":true,"uniqueKey":"data.internetExitCountry.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.internetExitCountry","typeLabel":"string | null"},"inboxQuantityChange":{"type":"integer","description":"Paid email addresses ($2/mo each) the same change adds or removes. Each Lusor Phone includes one address, so a removal that leaves more addresses than phones is +1 and added phones that cover paid addresses are negative; 0 when no address changes billing. Absent on older previews.","uniqueKey":"data.inboxQuantityChange","typeLabel":"integer"},"subtotal":{"type":"integer","description":"US cents, the invoice subtotal before invoice-level discounts and tax, with item-level discounts already applied (negative for a removal's credit).","uniqueKey":"data.subtotal","typeLabel":"integer"},"tax":{"type":"integer","description":"US cents of tax added on top of that subtotal (exclusive tax; inclusive tax is already inside the subtotal), so that subtotal - discountToday + tax is the invoice total.","uniqueKey":"data.tax","typeLabel":"integer"},"discountToday":{"type":"integer","description":"US cents of discounts itemized on the invoice billed now. Discounts already netted into prorated amounts are not counted. Absent on older previews.","uniqueKey":"data.discountToday","typeLabel":"integer"},"discountAtRenewal":{"type":"integer","description":"US cents of discounts itemized on the next full invoice. Absent on older previews.","uniqueKey":"data.discountAtRenewal","typeLabel":"integer"},"subtotalAtRenewal":{"type":"integer","description":"US cents, the next full invoice's subtotal before invoice-level discounts and added tax, so that subtotalAtRenewal - discountAtRenewal + taxAtRenewal = totalAtRenewal. Absent on older previews.","uniqueKey":"data.subtotalAtRenewal","typeLabel":"integer"},"taxAtRenewal":{"type":"integer","description":"US cents of tax added on top of that subtotal (exclusive tax; inclusive tax is already inside the subtotal). Absent on older previews.","uniqueKey":"data.taxAtRenewal","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"previewId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","quantity":123,"currency":"usd","dueToday":123,"creditToday":123,"totalAtRenewal":123,"expiresAt":123,"internetExitCountry":"\u003cstring>","inboxQuantityChange":123,"subtotal":123,"tax":123,"discountToday":123,"discountAtRenewal":123,"subtotalAtRenewal":123,"taxAtRenewal":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"26038566-620c-4c9d-a44f-b8a79dce9ed1":{"description":"Request validation failed. Either `validation_error` with per-field\n`details`, or `bad_request` with a `message`, depending on the\nendpoint.\n","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error","details"],"properties":{"error":{"type":"string","example":"validation_error","isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"isRequired":true,"uniqueKey":"oneOf.0.details","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.message","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"validation_error","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"daf84608-a156-429f-94af-2b08b804cce1":{"description":"Authentication required or invalid credentials.","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"617862fb-78a1-410a-9ca4-97e092cd3a3a":{"description":"`tier_phone_limit`: the plan's phone limit would be exceeded; the\nbody names the limit and the tier to upgrade to.\n","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"953b67c9-dbcd-4c33-a40b-171d08b1c821":{"description":"The caller may not perform this action.","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"346e01bc-8d89-445a-9d9e-bab298533678":{"description":"Resource not found.","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"268f9724-8a61-4191-bde3-e31a878a6170":{"description":"The change was refused; nothing was charged or removed by this call. `error` is one of:\n`default_workspace_only` (deploy outside the Default workspace),\n`no_subscription` (no active Phone plan),\n`checkout_open` (a checkout is still open),\n`payment_pending` (a payment on the plan is unpaid),\n`preview_expired` (the quote expired, is unknown, or the plan changed since: preview again),\n`device_busy` (a session is running on the phone),\n`device_releasing` (the phone is already being released),\n`last_phone` (the plan's last phone: cancel the plan in billing management instead),\nor `billing_conflict` (the plan needs support reconciliation).\n","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"71998b72-977f-4d72-ba50-02510824c3ce":{"description":"`billing_unavailable`: billing is temporarily unavailable. On a\npreview nothing changed. On a confirmation the outcome is unknown:\nretry the confirmation with the SAME `previewId`, which is never\napplied twice, and do not request a new quote (it could add a second\nphone).\n","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"e990c9c7-7adf-4c43-a478-c17a739371f3":{"ApiKey":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"Workspace API key, created in the dashboard under Settings → API Keys.","scopes":[],"schemeName":"ApiKey"}},"a66fdb89-a491-49fa-b34f-5bf4ba59f929":{"BearerAuth":{"type":"http","scheme":"bearer","description":"The same workspace API key, sent as `Authorization: Bearer \u003cyour API key>`.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"67414a81-b86b-4d15-b96f-3a390c272e81":{"url":"https://api.lusor.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"Workspace API key, created in the dashboard under Settings → API Keys.","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"X-Api-Key","type":"string","description":"Workspace API key, created in the dashboard under Settings → API Keys.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"X-Api-Key"}],"title":"ApiKey"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"The same workspace API key, sent as `Authorization: Bearer \u003cyour API key>`.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The same workspace API key, sent as `Authorization: Bearer \u003cyour API key>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"lusor-ai","siteName":"Lusor","title":"Preview deploying Lusor Phones - Lusor","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-10T18:45:51.545Z","originalFileLocation":"api-reference/devices/preview-deploying-lusor-phones.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Quotes quantity more Lusor Phones (default 1) on the workspace\u0026#x27;s Phone plan, as one change: the prorated amount charged today for the rest of the current period, and the next full invoice. Nothing is charged. The quote expires after 10 minutes; confirm it with POST /devices/deploy. Phones are deployed into the tenant\u0026#x27;s Default workspace only; any other workspace answers 409 default_workspace_only.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Lusor\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Preview deploying Lusor Phones - Lusor\">\u003cmeta data-mint-head property=\"og:description\" content=\"Quotes quantity more Lusor Phones (default 1) on the workspace\u0026#x27;s Phone plan, as one change: the prorated amount charged today for the rest of the current period, and the next full invoice. Nothing is charged. The quote expires after 10 minutes; confirm it with POST /devices/deploy. Phones are deployed into the tenant\u0026#x27;s Default workspace only; any other workspace answers 409 default_workspace_only.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Lusor\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lusor-ai.mintlify.site/_mintlify/api/og/v2?division=Devices\u0026amp;title=Preview+deploying+Lusor+Phones\u0026amp;description=Quotes+%60quantity%60+more+Lusor+Phones+%28default+1%29+on+the+workspace%27s%0APhone+plan%2C+as+one+change%3A+the%0Aprorated+amount+charged+today+for+the+rest+of+the+current+peri\u0026amp;theme=11044ab09cca21353c9d0db7\u0026amp;signature=11a9e45c84c19d089bbb491d6120069cbfff2c84666bc62c4bc26da9e743f0ee\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Preview deploying Lusor Phones - Lusor\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Quotes quantity more Lusor Phones (default 1) on the workspace\u0026#x27;s Phone plan, as one change: the prorated amount charged today for the rest of the current period, and the next full invoice. Nothing is charged. The quote expires after 10 minutes; confirm it with POST /devices/deploy. Phones are deployed into the tenant\u0026#x27;s Default workspace only; any other workspace answers 409 default_workspace_only.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lusor-ai.mintlify.site/_mintlify/api/og/v2?division=Devices\u0026amp;title=Preview+deploying+Lusor+Phones\u0026amp;description=Quotes+%60quantity%60+more+Lusor+Phones+%28default+1%29+on+the+workspace%27s%0APhone+plan%2C+as+one+change%3A+the%0Aprorated+amount+charged+today+for+the+rest+of+the+current+peri\u0026amp;theme=11044ab09cca21353c9d0db7\u0026amp;signature=11a9e45c84c19d089bbb491d6120069cbfff2c84666bc62c4bc26da9e743f0ee\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/lusor-ai/IpfY-Q6QPFVhWwzn/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Lusor\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#111111\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/devices/preview-deploying-lusor-phones.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.lusor.ai/#organization\",\"name\":\"Lusor\",\"url\":\"https://docs.lusor.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/lusor-ai/Ifu_dlUtLbDafp0r/images/lusor-logo-lightmode@2x.png?fit=max\u0026auto=format\u0026n=Ifu_dlUtLbDafp0r\u0026q=85\u0026s=977cb89acbdf111277711fe79f404fd5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.lusor.ai#website\",\"name\":\"Lusor\",\"url\":\"https://docs.lusor.ai\",\"publisher\":{\"@id\":\"https://docs.lusor.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones#webpage\",\"url\":\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones\",\"name\":\"Preview deploying Lusor Phones\",\"description\":\"Quotes quantity more Lusor Phones (default 1) on the workspace's Phone plan, as one change: the prorated amount charged today for the rest of the current period, and the next full invoice. Nothing is charged. The quote expires after 10 minutes; confirm it with POST /devices/deploy. Phones are deployed into the tenant's Default workspace only; any other workspace answers 409 default_workspace_only.\",\"dateModified\":\"2026-11-10T18:45:51.545Z\",\"isPartOf\":{\"@id\":\"https://docs.lusor.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.lusor.ai/api-reference/sessions/get-session-detail\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Devices\",\"item\":\"https://docs.lusor.ai/api-reference/devices/list-devices-in-the-keys-workspace\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Preview deploying Lusor Phones\",\"item\":\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones#apireference\",\"headline\":\"Preview deploying Lusor Phones\",\"name\":\"Preview deploying Lusor Phones\",\"description\":\"Quotes quantity more Lusor Phones (default 1) on the workspace's Phone plan, as one change: the prorated amount charged today for the rest of the current period, and the next full invoice. Nothing is charged. The quote expires after 10 minutes; confirm it with POST /devices/deploy. Phones are deployed into the tenant's Default workspace only; any other workspace answers 409 default_workspace_only.\",\"url\":\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones\",\"mainEntityOfPage\":{\"@id\":\"https://docs.lusor.ai/api-reference/devices/preview-deploying-lusor-phones#webpage\"},\"dateModified\":\"2026-11-10T18:45:51.545Z\",\"publisher\":{\"@id\":\"https://docs.lusor.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.lusor.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Lusor\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Lusor\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/devices/preview-deploying-lusor-phones.md","siteName":"Lusor","nav":{"global":null,"tabs":[{"tab":"Developers","pages":[{"title":"Developers","href":""}]},{"tab":"Help Center","pages":[{"title":"Help Center","href":"/help"}]},{"tab":"Build with AI","pages":[{"title":"Build with AI","href":"/connect"}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API reference","href":"/api-reference/introduction"}]},{"group":"Endpoints","pages":[{"group":"Sessions","pages":[{"title":"Get session detail","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}","href":"/api-reference/sessions/get-session-detail"},{"title":"Rename a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/sessions/{id}","href":"/api-reference/sessions/rename-a-session"},{"title":"Get session events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/events","href":"/api-reference/sessions/get-session-events"},{"title":"Get the detailed step breakdown (session JSON)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/breakdown","href":"/api-reference/sessions/get-the-detailed-step-breakdown-session-json"},{"title":"List sessions for device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/sessions","href":"/api-reference/sessions/list-sessions-for-device"},{"title":"Create a new session on this device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/sessions","href":"/api-reference/sessions/create-a-new-session-on-this-device"},{"title":"List sessions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions","href":"/api-reference/sessions/list-sessions"},{"title":"Get session status (lightweight)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/status","href":"/api-reference/sessions/get-session-status-lightweight"},{"title":"Get session artifacts (screenshots + ui-states + output)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/artifacts","href":"/api-reference/sessions/get-session-artifacts-screenshots-+-ui-states-+-output"},{"title":"Cancel a running session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stop","href":"/api-reference/sessions/cancel-a-running-session"},{"title":"Get one captured UI state of a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/ui-states/{file}","href":"/api-reference/sessions/get-one-captured-ui-state-of-a-session"},{"title":"Cancel a queued follow-up or queued agent turn","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/sessions/{id}/queue/{invocationId}","href":"/api-reference/sessions/cancel-a-queued-follow-up-or-queued-agent-turn"},{"title":"Send a follow-up message to a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/continue","href":"/api-reference/sessions/send-a-follow-up-message-to-a-session"},{"title":"Answer the agent's question (request_human)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/hitl","href":"/api-reference/sessions/answer-the-agents-question-request_human"},{"title":"Get the session's video recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/recording","href":"/api-reference/sessions/get-the-sessions-video-recording"},{"title":"Get the session's step-by-step replay","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/replay","href":"/api-reference/sessions/get-the-sessions-step-by-step-replay"},{"title":"Download one replay frame (PNG)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/replay/frame","href":"/api-reference/sessions/download-one-replay-frame-png"}]},{"group":"Skills","pages":[{"title":"List skills","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/skills","href":"/api-reference/skills/list-skills"},{"title":"Create a skill","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/skills","href":"/api-reference/skills/create-a-skill"},{"title":"Get a skill","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/skills/{id}","href":"/api-reference/skills/get-a-skill"},{"title":"Delete a skill","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/skills/{id}","href":"/api-reference/skills/delete-a-skill"},{"title":"Update a skill","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/skills/{id}","href":"/api-reference/skills/update-a-skill"}]},{"group":"Secrets","pages":[{"title":"List the secrets saved in a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/vault","href":"/api-reference/secrets/list-the-secrets-saved-in-a-workspace"}]},{"group":"PhoneNumbers","pages":[{"title":"List workspace phone numbers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/numbers","href":"/api-reference/phonenumbers/list-workspace-phone-numbers"},{"title":"Get one workspace phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/numbers/{phoneNumberId}","href":"/api-reference/phonenumbers/get-one-workspace-phone-number"},{"title":"Page stored SMS messages for a workspace number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/numbers/{phoneNumberId}/messages","href":"/api-reference/phonenumbers/page-stored-sms-messages-for-a-workspace-number"}]},{"group":"Emails","pages":[{"title":"List the workspace's Agent Mail addresses","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/emails/addresses","href":"/api-reference/emails/list-the-workspaces-agent-mail-addresses"},{"title":"Page stored inbound mail for a workspace address","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/emails/messages","href":"/api-reference/emails/page-stored-inbound-mail-for-a-workspace-address"}]},{"group":"Devices","pages":[{"title":"List devices in the key's workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/devices","href":"/api-reference/devices/list-devices-in-the-keys-workspace"},{"title":"List devices in a workspace","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices","href":"/api-reference/devices/list-devices-in-a-workspace"},{"title":"Preview deploying Lusor Phones","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/deploy/preview","href":"/api-reference/devices/preview-deploying-lusor-phones"},{"title":"Deploy the quoted Lusor Phones","description":"Confirms a deploy quote: the Phone plan quantity rises by the quoted\nnumber of phones and the quoted amount is charged to the saved card\nnow. If the payment does not go through, the quantity stays\nunchanged, `paymentPending` is true and no phone is deployed;\ncomplete the payment in billing management.\n\nEach new phone appears in `GET /devices` once the payment is\nconfirmed (seconds), and is ready to use once it has deployed\n(minutes).\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/deploy","href":"/api-reference/devices/deploy-the-quoted-lusor-phones"},{"title":"Preview removing a Lusor Phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/remove/preview","href":"/api-reference/devices/preview-removing-a-lusor-phone"},{"title":"Remove a Lusor Phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/remove","href":"/api-reference/devices/remove-a-lusor-phone"},{"title":"Get a Lusor Phone's location and timezone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/geo","href":"/api-reference/devices/get-a-lusor-phones-location-and-timezone"},{"title":"Set a Lusor Phone's location and timezone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/workspaces/{workspaceId}/devices/{deviceId}/geo","href":"/api-reference/devices/set-a-lusor-phones-location-and-timezone"},{"title":"Restore a Lusor Phone's automatic location","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/workspaces/{workspaceId}/devices/{deviceId}/geo","href":"/api-reference/devices/restore-a-lusor-phones-automatic-location"},{"title":"Get which agents are using, queued for, or attached to a phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/occupancy","href":"/api-reference/devices/get-which-agents-are-using-queued-for-or-attached-to-a-phone"},{"title":"List the countries a Lusor Phone's Internet can exit from","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/internet/locations","href":"/api-reference/devices/list-the-countries-a-lusor-phones-internet-can-exit-from"},{"title":"Get a Lusor Phone's Internet exit country and route","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/internet-location","href":"/api-reference/devices/get-a-lusor-phones-internet-exit-country-and-route"},{"title":"Get a Lusor Phone's static IP status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/static-ip","href":"/api-reference/devices/get-a-lusor-phones-static-ip-status"},{"title":"Get a Lusor Phone's wipe-and-reset progress","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/reset","href":"/api-reference/devices/get-a-lusor-phones-wipe-and-reset-progress"},{"title":"Get device UI state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/state","href":"/api-reference/devices/get-device-ui-state"},{"title":"Get fresh device screenshot (binary PNG)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/screenshot","href":"/api-reference/devices/get-fresh-device-screenshot-binary-png"},{"title":"Get a Lusor Phone's language","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/language","href":"/api-reference/devices/get-a-lusor-phones-language"},{"title":"Set a Lusor Phone's language","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/workspaces/{workspaceId}/devices/{deviceId}/language","href":"/api-reference/devices/set-a-lusor-phones-language"},{"title":"Get a Lusor Phone's identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/identity","href":"/api-reference/devices/get-a-lusor-phones-identity"},{"title":"Set a Lusor Phone's identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/workspaces/{workspaceId}/devices/{deviceId}/identity","href":"/api-reference/devices/set-a-lusor-phones-identity"},{"title":"Get a Lusor Phone's last advertising-ID reset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}/devices/{deviceId}/advertising-id","href":"/api-reference/devices/get-a-lusor-phones-last-advertising-id-reset"},{"title":"Reset a Lusor Phone's advertising ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/advertising-id/reset","href":"/api-reference/devices/reset-a-lusor-phones-advertising-id"}]},{"group":"DeviceVerbs","pages":[{"title":"Trigger screenshot (capture-aware verb)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/screenshot","href":"/api-reference/deviceverbs/trigger-screenshot-capture-aware-verb"},{"title":"Tap on device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/tap","href":"/api-reference/deviceverbs/tap-on-device"},{"title":"Swipe gesture on device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/swipe","href":"/api-reference/deviceverbs/swipe-gesture-on-device"},{"title":"Type text into focused field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/type","href":"/api-reference/deviceverbs/type-text-into-focused-field"},{"title":"Press a key on device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/key","href":"/api-reference/deviceverbs/press-a-key-on-device"},{"title":"Clear focused field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/clear","href":"/api-reference/deviceverbs/clear-focused-field"},{"title":"Press Back key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/back","href":"/api-reference/deviceverbs/press-back-key"},{"title":"Press Home key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/home","href":"/api-reference/deviceverbs/press-home-key"},{"title":"Press Recent Apps key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/recent","href":"/api-reference/deviceverbs/press-recent-apps-key"},{"title":"Launch an app","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/apps/start","href":"/api-reference/deviceverbs/launch-an-app"},{"title":"Force-stop an app","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/apps/stop","href":"/api-reference/deviceverbs/force-stop-an-app"},{"title":"Run a chain of actions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/chain","href":"/api-reference/deviceverbs/run-a-chain-of-actions"}]},{"group":"Shell","pages":[{"title":"Run a restricted shell command","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{workspaceId}/devices/{deviceId}/shell","href":"/api-reference/shell/run-a-restricted-shell-command"}]},{"group":"LiveView","pages":[{"title":"Start a live view of the session's phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/start","href":"/api-reference/liveview/start-a-live-view-of-the-sessions-phone"},{"title":"Re-arm a live view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/connect","href":"/api-reference/liveview/re-arm-a-live-view"},{"title":"Extend a live view's liveness","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/keepalive","href":"/api-reference/liveview/extend-a-live-views-liveness"},{"title":"Ask the phone for a fresh keyframe","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/request_frame","href":"/api-reference/liveview/ask-the-phone-for-a-fresh-keyframe"},{"title":"Send a WebRTC answer or ICE candidate to the phone","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/signal","href":"/api-reference/liveview/send-a-webrtc-answer-or-ice-candidate-to-the-phone"},{"title":"Stop a live view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/stream/stop","href":"/api-reference/liveview/stop-a-live-view"},{"title":"Get the ICE servers for a live view","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/stream/ice-servers","href":"/api-reference/liveview/get-the-ice-servers-for-a-live-view"},{"title":"Receive the phone's WebRTC signaling (Server-Sent Events)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sessions/{id}/stream/events","href":"/api-reference/liveview/receive-the-phones-webrtc-signaling-server-sent-events"}]},{"group":"Datasets","pages":[{"title":"Promote one session run's list to a Dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sessions/{id}/datasets","href":"/api-reference/datasets/promote-one-session-runs-list-to-a-dataset"},{"title":"List Datasets visible to the caller","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets","href":"/api-reference/datasets/list-datasets-visible-to-the-caller"},{"title":"Get a Dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}","href":"/api-reference/datasets/get-a-dataset"},{"title":"Delete a Dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/datasets/{id}","href":"/api-reference/datasets/delete-a-dataset"},{"title":"Update a Dataset (rename and/or replace output)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/datasets/{id}","href":"/api-reference/datasets/update-a-dataset-rename-andor-replace-output"}]},{"group":"Agents","pages":[{"title":"List active agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents","href":"/api-reference/agents/list-active-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents","href":"/api-reference/agents/create-an-agent"},{"title":"Get or create the workspace's primary agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/primary","href":"/api-reference/agents/get-or-create-the-workspaces-primary-agent"},{"title":"List agents recoverable within the 30-day restore window","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents/trash","href":"/api-reference/agents/list-agents-recoverable-within-the-30-day-restore-window"},{"title":"Get an agent, attachments, and the newest page of turns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents/{id}","href":"/api-reference/agents/get-an-agent-attachments-and-the-newest-page-of-turns"},{"title":"Archive an agent for 30 days","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/agents/{id}","href":"/api-reference/agents/archive-an-agent-for-30-days"},{"title":"Update an agent and atomically replace its attachment set","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/agents/{id}","href":"/api-reference/agents/update-an-agent-and-atomically-replace-its-attachment-set"},{"title":"Restore an archived agent within its 30-day window","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/{id}/restore","href":"/api-reference/agents/restore-an-archived-agent-within-its-30-day-window"},{"title":"Read one older page of an agent's turn history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents/{id}/turns","href":"/api-reference/agents/read-one-older-page-of-an-agents-turn-history"},{"title":"Submit a turn to an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/{id}/turns","href":"/api-reference/agents/submit-a-turn-to-an-agent"},{"title":"Cancel a turn that is still waiting for its device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/{id}/turns/{sessionId}/cancel","href":"/api-reference/agents/cancel-a-turn-that-is-still-waiting-for-its-device"}]},{"group":"Workspaces","pages":[{"title":"Get a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{workspaceId}","href":"/api-reference/workspaces/get-a-workspace"}]},{"group":"Catalog","pages":[{"title":"List installable catalog apps","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/catalog/apps","href":"/api-reference/catalog/list-installable-catalog-apps"},{"title":"Get a catalog app's icon (binary image)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/catalog/apps/{package}/icon","href":"/api-reference/catalog/get-a-catalog-apps-icon-binary-image"}]},{"group":"Health","pages":[{"title":"Health check","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/health","href":"/api-reference/health/health-check"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Preview deploying Lusor Phones - Lusor","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-D6S0Yh6q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}