The OTP's state. There is no delivered value: a carrier receipt
is reported through delivered_at, a delivered hop in
timeline, and the otp.delivered webhook, while status
stays where it was (normally sent).
When the first delivery receipt arrived, from the carrier for the
SMS leg or from WhatsApp for a WhatsApp leg. Absent until then, and
absent for good on routes that send no receipt. This, not
status, is how a polled OTP shows delivery.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Robase","description":"SMS and WhatsApp OTP plus transactional SMS API for Africa. Prepaid credits, failover where a route has a second path, Node/Go/PHP SDKs.","colors":{"primary":"#0891B2","light":"#22D3EE","dark":"#0E7490"},"logo":{"light":"https://mintcdn.com/kivatechnologies/k2GghN5nZfu1eiOu/logo/light.svg?fit=max\u0026auto=format\u0026n=k2GghN5nZfu1eiOu\u0026q=85\u0026s=193f7e31495ddf41cd16f40f06effd2b","dark":"https://mintcdn.com/kivatechnologies/k2GghN5nZfu1eiOu/logo/dark.svg?fit=max\u0026auto=format\u0026n=k2GghN5nZfu1eiOu\u0026q=85\u0026s=8f0e5ea35e3a44b2d6ca3d27539f0742","href":"https://robase.dev"},"favicon":"https://mintcdn.com/kivatechnologies/k2GghN5nZfu1eiOu/favicon.svg?fit=max\u0026auto=format\u0026n=k2GghN5nZfu1eiOu\u0026q=85\u0026s=7b7238cf63966aca6d4a233193e2808b","api":{"openapi":"openapi.yaml"},"navbar":{"links":[{"href":"https://robase.dev/app","label":"Dashboard"},{"href":"https://robase.dev/pricing","label":"Pricing"}],"primary":{"type":"button","label":"Sign up","href":"https://robase.dev/signup"}},"footer":{"socials":{"github":"https://github.com/mantissatech/robase-sdk-js","website":"https://robase.dev"}},"markdown":{"instructions":["For chatbots and coding agents, start at /guides/ai-agents.","Hosted MCP: POST https://api.robase.dev/mcp (Streamable HTTP). Auth: Authorization: Bearer robe_… or robe_agent_….","Phase 1 tools: get_pricing, send_otp, verify_otp, get_otp, send_sms, get_sms. No payment or top-up tools.","Call get_pricing; treat listed:true as marketed markets (NG, GH, KE, ZA, GB, BJ, CI, US). Do not invent countries or delivery percentages.","Prefer OTP-shaped tests such as \"Your Robase test OTP is 123456\". Do not send Hello or Good morning as tests. Match errors on error.type."]},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Status","icon":"heart-pulse","href":"https://robase.dev/status"},{"anchor":"GitHub","icon":"github","href":"/sdks/overview"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kivatechnologies","hasAudioNarration":false,"actualSubdomain":"kivatechnologies","customDomains":["docs.robase.dev"],"gitSource":{"type":"github","owner":"mantissatech","repo":"robaseapp","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae9c50f599afdae0f298a4c","collectionId":"5edf735a-65bc-4120-861d-f2026781b940","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9c50f599afdae0f298a4c"},"entitlements":{},"buildId":"6ae9c50f599afdae0f298a4c","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"SMS","count":9},{"language":"default","tag":"API reference","count":8},{"language":"default","tag":"Dashboard","count":8},{"language":"default","tag":"Guides","count":6},{"language":"default","tag":"Concepts","count":5},{"language":"default","tag":"SDKs","count":4},{"language":"default","tag":"Get started","count":2},{"language":"default","tag":"Resources","count":1}]},"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":"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":"vite-origin","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":"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}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/otp/get","slug":"/api-reference/otp/get","pageMetadata":{"title":"Get an OTP","description":"GET /v1/otp/{id}: status and metadata. The code is never returned.","openapi":"openapi.yaml GET /v1/otp/{id}","href":"/api-reference/otp/get"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"GET /v1/otp/\", \": status and metadata. The code is never returned.\"]\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":"Get an OTP","description":"GET /v1/otp/{id}: status and metadata. The code is never returned.","openapi":"openapi.yaml GET /v1/otp/{id}","href":"/api-reference/otp/get"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Get OTP status","description":"GET /v1/otp/{id}: status and metadata. The code is never returned.","operationId":"getOTP","tags":["OTP"],"security":["f60ade02-4b77-4d0d-8d8d-3cd47696735f"],"parameters":["65af673b-dcee-4148-bc01-cb025b1787d2"],"responses":{"200":"f4f4805b-a911-4dd3-9a00-73b3d2346fda","401":"ce38bb19-fc28-4cb9-9305-b98086545cf5","403":"5ee6ea5b-3361-4366-801e-0c43796210d8","404":"746f7e56-1d7b-410e-930c-537ca9969782","429":"20f9d5fb-64dd-4291-ba87-ea5d2a5f119b","500":"14712685-c095-4e59-8aa3-a9af8f453a28"},"method":"get","type":"path","servers":["4ecea0f7-1573-408e-a152-6e249230f7dd","b852e463-4157-4d05-88d2-88849c1b59b3"],"path":"/v1/otp/{id}","baseUrlOptions":["https://api.robase.dev","http://localhost:8080"],"title":"Get OTP status","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"65af673b-dcee-4148-bc01-cb025b1787d2":{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"OTP ID returned from send","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"OTP ID returned from send"}},"responses":{"f4f4805b-a911-4dd3-9a00-73b3d2346fda":{"description":"OTP details","content":{"application/json":{"schema":{"type":"object","required":["id","workspace_id","phone_number","country_code","credit_cost","status","code_length","ttl_seconds","attempt_count","max_attempts","expired_at","created_at"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"workspace_id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"workspace_id","typeLabel":"string\u003cuuid>"},"phone_number":{"type":"string","isRequired":true,"uniqueKey":"phone_number","typeLabel":"string"},"country_code":{"type":"string","description":"ISO 3166-1 alpha-2 country code","isRequired":true,"uniqueKey":"country_code","typeLabel":"string"},"credit_cost":{"type":"integer","isRequired":true,"uniqueKey":"credit_cost","typeLabel":"integer"},"status":{"type":"string","enum":["pending","sent","verified","expired","failed"],"description":"The OTP's state. There is no `delivered` value: a carrier receipt\nis reported through `delivered_at`, a `delivered` hop in\n`timeline`, and the `otp.delivered` webhook, while `status`\nstays where it was (normally `sent`).\n","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"code_length":{"type":"integer","isRequired":true,"uniqueKey":"code_length","typeLabel":"integer"},"ttl_seconds":{"type":"integer","isRequired":true,"uniqueKey":"ttl_seconds","typeLabel":"integer"},"attempt_count":{"type":"integer","description":"Verification attempts made so far","isRequired":true,"uniqueKey":"attempt_count","typeLabel":"integer"},"max_attempts":{"type":"integer","description":"Attempt budget before the OTP is burned","example":5,"isRequired":true,"uniqueKey":"max_attempts","typeLabel":"integer"},"expired_at":{"type":"string","format":"date-time","description":"When the code stops being verifiable","isRequired":true,"uniqueKey":"expired_at","typeLabel":"string\u003cdate-time>"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"sent_at":{"type":"string","format":"date-time","uniqueKey":"sent_at","typeLabel":"string\u003cdate-time>"},"delivered_at":{"type":"string","format":"date-time","description":"When the first delivery receipt arrived, from the carrier for the\nSMS leg or from WhatsApp for a WhatsApp leg. Absent until then, and\nabsent for good on routes that send no receipt. This, not\n`status`, is how a polled OTP shows delivery.\n","uniqueKey":"delivered_at","typeLabel":"string\u003cdate-time>"},"verified_at":{"type":"string","format":"date-time","uniqueKey":"verified_at","typeLabel":"string\u003cdate-time>"},"failed_at":{"type":"string","format":"date-time","description":"When the OTP was marked failed. Absent otherwise.","uniqueKey":"failed_at","typeLabel":"string\u003cdate-time>"},"failure_reason":{"type":"string","description":"Reason token behind a failed status. See TimelineItem.","uniqueKey":"failure_reason","typeLabel":"string"},"metadata":{"type":"object","additionalProperties":true,"uniqueKey":"metadata","typeLabel":"object"},"channel":{"type":"string","enum":["sms","whatsapp","both"],"description":"Channel(s) this OTP was sent on. Codes from before WhatsApp OTP read `sms`.","uniqueKey":"channel","typeLabel":"enum\u003cstring>"},"whatsapp_status":{"type":"string","enum":["pending","sent","delivered","failed"],"description":"The WhatsApp leg's own state. Present only when `channel` is\n`whatsapp` or `both`. Unlike `status`, this field does take\n`delivered`.\n","uniqueKey":"whatsapp_status","typeLabel":"enum\u003cstring>"},"timeline":{"type":"array","description":"Hops the OTP took, oldest first.","items":{"type":"object","required":["at","status"],"properties":{"at":{"type":"string","format":"date-time","description":"When the hop happened (RFC 3339).","isRequired":true,"uniqueKey":"timeline.items.[INDEX].at","typeLabel":"string\u003cdate-time>"},"status":{"type":"string","description":"`queued` (charged and waiting for the worker), then the message's\nown status values: `sent`, `delivered`, `failed`, `blocked`, and for\nOTPs `verified` and `expired`. A hop is listed only when its time\nis known; `status` on the parent object is always authoritative.\n","isRequired":true,"uniqueKey":"timeline.items.[INDEX].status","typeLabel":"string"},"reason":{"type":"string","description":"Stable machine token. Present on a terminal hop when known, and on\n`sent` when the anti-spam screen flagged but still sent the message.\nTokens: `send_failed`, `delivery_failed`, `antispam_blocked`,\n`antispam_flagged`, `max_attempts_exceeded`, `workspace_suspended`,\n`workspace_restricted`, `kyc_required`. Omitted when unknown.\n","uniqueKey":"timeline.items.[INDEX].reason","typeLabel":"string"},"refunded":{"type":"boolean","description":"On a terminal `failed` or `blocked` hop only. Reflects the credit\nledger: `true` means the charge was returned.\n","uniqueKey":"timeline.items.[INDEX].refunded","typeLabel":"boolean"}},"uniqueKey":"timeline.items.[INDEX]","typeLabel":"object"},"uniqueKey":"timeline","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","workspace_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","phone_number":"\u003cstring>","country_code":"\u003cstring>","credit_cost":123,"status":"pending","code_length":123,"ttl_seconds":123,"attempt_count":123,"max_attempts":5,"expired_at":"2023-11-07T05:31:56Z","created_at":"2023-11-07T05:31:56Z","sent_at":"2023-11-07T05:31:56Z","delivered_at":"2023-11-07T05:31:56Z","verified_at":"2023-11-07T05:31:56Z","failed_at":"2023-11-07T05:31:56Z","failure_reason":"\u003cstring>","metadata":{},"channel":"sms","whatsapp_status":"pending","timeline":[{"at":"2023-11-07T05:31:56Z","status":"\u003cstring>","reason":"\u003cstring>","refunded":true}]}}},"exampleType":"generated"}},"exampleType":"generated"},"ce38bb19-fc28-4cb9-9305-b98086545cf5":{"description":"The API key is missing, malformed, or unknown.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","message"],"properties":{"type":{"type":"string","description":"Stable machine-readable identifier. Match on this rather than on\n`message`.\n","enum":["validation_error","invalid_phone","country_not_supported","unauthorized","insufficient_credits","kyc_required","account_suspended","account_temporarily_restricted","otp_not_found","sms_not_found","insufficient_scope","country_not_enabled","prefix_blocked","content_blocked","screening_unavailable","idempotency_key_reused","request_in_progress","otp_expired","otp_already_verified","max_attempts_exceeded","rate_limited","internal_error","whatsapp_not_available"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description. Not stable, do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"required_scope":{"type":"string","description":"With `insufficient_scope`, the scope the API key is missing.","uniqueKey":"error.required_scope","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"type":"insufficient_credits","message":"insufficient credit balance"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"unauthorized","message":"invalid API key"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"unauthorized","message":"invalid API key"}}}},"exampleType":"examples"}},"exampleType":"examples"},"5ee6ea5b-3361-4366-801e-0c43796210d8":{"description":"The API key does not have the scope this endpoint needs. Agent keys\ncarry scopes (`otp:send`, `otp:verify`, `sms:send`, `read`,\n`approvals:request`); keys made before scopes existed keep full access.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","message"],"properties":{"type":{"type":"string","description":"Stable machine-readable identifier. Match on this rather than on\n`message`.\n","enum":["validation_error","invalid_phone","country_not_supported","unauthorized","insufficient_credits","kyc_required","account_suspended","account_temporarily_restricted","otp_not_found","sms_not_found","insufficient_scope","country_not_enabled","prefix_blocked","content_blocked","screening_unavailable","idempotency_key_reused","request_in_progress","otp_expired","otp_already_verified","max_attempts_exceeded","rate_limited","internal_error","whatsapp_not_available"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description. Not stable, do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"required_scope":{"type":"string","description":"With `insufficient_scope`, the scope the API key is missing.","uniqueKey":"error.required_scope","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"type":"insufficient_credits","message":"insufficient credit balance"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"insufficient_scope","message":"this API key does not have the read scope","required_scope":"read"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"insufficient_scope","message":"this API key does not have the read scope","required_scope":"read"}}}},"exampleType":"examples"}},"exampleType":"examples"},"746f7e56-1d7b-410e-930c-537ca9969782":{"description":"No record with that ID exists in this workspace.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","message"],"properties":{"type":{"type":"string","description":"Stable machine-readable identifier. Match on this rather than on\n`message`.\n","enum":["validation_error","invalid_phone","country_not_supported","unauthorized","insufficient_credits","kyc_required","account_suspended","account_temporarily_restricted","otp_not_found","sms_not_found","insufficient_scope","country_not_enabled","prefix_blocked","content_blocked","screening_unavailable","idempotency_key_reused","request_in_progress","otp_expired","otp_already_verified","max_attempts_exceeded","rate_limited","internal_error","whatsapp_not_available"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description. Not stable, do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"required_scope":{"type":"string","description":"With `insufficient_scope`, the scope the API key is missing.","uniqueKey":"error.required_scope","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"type":"insufficient_credits","message":"insufficient credit balance"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"otp_not_found","message":"OTP not found"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"otp_not_found","message":"OTP not found"}}}},"exampleType":"examples"}},"exampleType":"examples"},"20f9d5fb-64dd-4291-ba87-ea5d2a5f119b":{"description":"A rate limit was exceeded: per API key (600 sends or 1200 reads a\nminute by default), per workspace (3000 a minute by default), per\ndestination prefix (300 OTPs an hour by default), per destination\nphone, or per client IP. Limits are counted per workspace, so another\nworkspace's traffic never uses up yours. Retry after `Retry-After`.\n","headers":{"Retry-After":{"description":"Whole seconds until the counter that refused the request resets (at least 1).","schema":{"type":"integer","minimum":1},"example":42}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","message"],"properties":{"type":{"type":"string","description":"Stable machine-readable identifier. Match on this rather than on\n`message`.\n","enum":["validation_error","invalid_phone","country_not_supported","unauthorized","insufficient_credits","kyc_required","account_suspended","account_temporarily_restricted","otp_not_found","sms_not_found","insufficient_scope","country_not_enabled","prefix_blocked","content_blocked","screening_unavailable","idempotency_key_reused","request_in_progress","otp_expired","otp_already_verified","max_attempts_exceeded","rate_limited","internal_error","whatsapp_not_available"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description. Not stable, do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"required_scope":{"type":"string","description":"With `insufficient_scope`, the scope the API key is missing.","uniqueKey":"error.required_scope","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"type":"insufficient_credits","message":"insufficient credit balance"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"rate_limited","message":"too many send attempts, try again later"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"rate_limited","message":"too many send attempts, try again later"}}}},"exampleType":"examples"}},"exampleType":"examples"},"14712685-c095-4e59-8aa3-a9af8f453a28":{"description":"An unexpected server-side failure. Safe to retry with the same `Idempotency-Key`.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","message"],"properties":{"type":{"type":"string","description":"Stable machine-readable identifier. Match on this rather than on\n`message`.\n","enum":["validation_error","invalid_phone","country_not_supported","unauthorized","insufficient_credits","kyc_required","account_suspended","account_temporarily_restricted","otp_not_found","sms_not_found","insufficient_scope","country_not_enabled","prefix_blocked","content_blocked","screening_unavailable","idempotency_key_reused","request_in_progress","otp_expired","otp_already_verified","max_attempts_exceeded","rate_limited","internal_error","whatsapp_not_available"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable description. Not stable, do not parse.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"required_scope":{"type":"string","description":"With `insufficient_scope`, the scope the API key is missing.","uniqueKey":"error.required_scope","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"example":{"error":{"type":"insufficient_credits","message":"insufficient credit balance"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"type":"internal_error","message":"an unexpected error occurred"}},"examples":{"Example":{"title":"Example","value":{"error":{"type":"internal_error","message":"an unexpected error occurred"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"f60ade02-4b77-4d0d-8d8d-3cd47696735f":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Your Robase API key. Starts with robe_. Include as Authorization: Bearer robe_...","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"4ecea0f7-1573-408e-a152-6e249230f7dd":{"url":"https://api.robase.dev","description":"Production"},"b852e463-4157-4d05-88d2-88849c1b59b3":{"url":"http://localhost:8080","description":"Local development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Your Robase API key. Starts with robe_. Include as Authorization: Bearer robe_...","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Your Robase API key. Starts with robe_. Include as Authorization: Bearer robe_...","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"kivatechnologies","siteName":"Robase","title":"Get an OTP - Robase","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-09T08:05:23.213Z","originalFileLocation":"api-reference/otp/get.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=\"GET /v1/otp/{id}: status and metadata. The code is never returned.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Robase\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kivatechnologies/-pDgN7Lbrd8jPfrt/_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/kivatechnologies/-pDgN7Lbrd8jPfrt/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kivatechnologies/-pDgN7Lbrd8jPfrt/_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/kivatechnologies/-pDgN7Lbrd8jPfrt/_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/kivatechnologies/-pDgN7Lbrd8jPfrt/_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/kivatechnologies/-pDgN7Lbrd8jPfrt/_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/kivatechnologies/-pDgN7Lbrd8jPfrt/_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/kivatechnologies/-pDgN7Lbrd8jPfrt/_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/kivatechnologies/-pDgN7Lbrd8jPfrt/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get an OTP - Robase\">\u003cmeta data-mint-head property=\"og:description\" content=\"GET /v1/otp/{id}: status and metadata. The code is never returned.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Robase\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.robase.dev/api-reference/otp/get\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kivatechnologies.mintlify.app/_mintlify/api/og/v2?division=API+reference\u0026amp;title=Get+an+OTP\u0026amp;description=GET+%2Fv1%2Fotp%2F%7Bid%7D%3A+status+and+metadata.+The+code+is+never+returned.\u0026amp;theme=88cdc35c544c7df44329ced1\u0026amp;signature=195a20088b8eb28b77bbaf103553cb17b9a130ff2393f3ded4690f3ea887c019\">\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=\"Get an OTP - Robase\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"GET /v1/otp/{id}: status and metadata. The code is never returned.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kivatechnologies.mintlify.app/_mintlify/api/og/v2?division=API+reference\u0026amp;title=Get+an+OTP\u0026amp;description=GET+%2Fv1%2Fotp%2F%7Bid%7D%3A+status+and+metadata.+The+code+is+never+returned.\u0026amp;theme=88cdc35c544c7df44329ced1\u0026amp;signature=195a20088b8eb28b77bbaf103553cb17b9a130ff2393f3ded4690f3ea887c019\">\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/kivatechnologies/-pDgN7Lbrd8jPfrt/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Robase\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0891B2\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.robase.dev/api-reference/otp/get\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/otp/get.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.robase.dev/#organization\",\"name\":\"Robase\",\"url\":\"https://docs.robase.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kivatechnologies/k2GghN5nZfu1eiOu/logo/light.svg?fit=max\u0026auto=format\u0026n=k2GghN5nZfu1eiOu\u0026q=85\u0026s=193f7e31495ddf41cd16f40f06effd2b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.robase.dev#website\",\"name\":\"Robase\",\"url\":\"https://docs.robase.dev\",\"publisher\":{\"@id\":\"https://docs.robase.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.robase.dev/api-reference/otp/get#webpage\",\"url\":\"https://docs.robase.dev/api-reference/otp/get\",\"name\":\"Get an OTP\",\"description\":\"GET /v1/otp/{id}: status and metadata. The code is never returned.\",\"dateModified\":\"2026-10-09T08:05:23.213Z\",\"isPartOf\":{\"@id\":\"https://docs.robase.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.robase.dev/api-reference/otp/get#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.robase.dev/api-reference/otp/get#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://docs.robase.dev/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get an OTP\",\"item\":\"https://docs.robase.dev/api-reference/otp/get\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.robase.dev/api-reference/otp/get#apireference\",\"headline\":\"Get an OTP\",\"name\":\"Get an OTP\",\"description\":\"GET /v1/otp/{id}: status and metadata. The code is never returned.\",\"url\":\"https://docs.robase.dev/api-reference/otp/get\",\"mainEntityOfPage\":{\"@id\":\"https://docs.robase.dev/api-reference/otp/get#webpage\"},\"dateModified\":\"2026-10-09T08:05:23.213Z\",\"publisher\":{\"@id\":\"https://docs.robase.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.robase.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Robase\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Robase","nav":{"global":{"anchors":[{"anchor":"Status","icon":"heart-pulse","href":"https://robase.dev/status"},{"anchor":"GitHub","icon":"github","href":"/sdks/overview"}]},"groups":[{"group":"Get started","pages":[{"title":"Robase","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Dashboard","pages":[{"title":"Setup wizard","href":"/dashboard/setup"},{"title":"Business verification (KYC)","href":"/dashboard/kyc"},{"title":"Auto top-up","href":"/dashboard/billing"},{"title":"SMS logs and OTP logs","href":"/dashboard/logs"},{"title":"Test send","href":"/dashboard/test-send"},{"title":"Support tickets","href":"/dashboard/support"},{"title":"Team, roles, and invites","href":"/dashboard/team"},{"title":"Settings","href":"/dashboard/settings"}]},{"group":"Concepts","pages":[{"title":"Authentication","href":"/concepts/authentication"},{"title":"Idempotency","href":"/concepts/idempotency"},{"title":"Rate limits","href":"/concepts/rate-limits"},{"title":"Errors","href":"/concepts/errors"},{"title":"Webhooks","href":"/concepts/webhooks"}]},{"group":"SMS","pages":[{"title":"SMS overview","href":"/sms/overview"},{"title":"Sending SMS","href":"/sms/sending"},{"title":"Delivery timeline","href":"/sms/delivery-timeline"},{"title":"Pricing","href":"/sms/pricing"},{"title":"Segments and encoding","href":"/sms/segments-encoding"},{"title":"Sender IDs","href":"/sms/sender-ids"},{"title":"Multi-country","href":"/sms/multi-country"},{"title":"Routing and failover","href":"/sms/providers"},{"title":"SMS webhooks","href":"/sms/webhooks"}]},{"group":"Guides","pages":[{"title":"OTP verification","href":"/guides/otp-verification"},{"title":"WhatsApp OTP","href":"/guides/whatsapp-otp"},{"title":"Transactional SMS","href":"/guides/transactional-sms"},{"title":"AI agents","href":"/guides/ai-agents"},{"title":"DND compliance (Nigeria)","href":"/guides/dnd-compliance"},{"title":"Webhook security","href":"/guides/webhook-security"}]},{"group":"SDKs","pages":[{"title":"SDKs","href":"/sdks/overview"},{"title":"JavaScript / TypeScript SDK","href":"/sdks/javascript"},{"title":"Go SDK","href":"/sdks/go"},{"title":"PHP SDK","href":"/sdks/php"}]},{"group":"API reference","pages":[{"title":"API reference","href":"/api-reference/introduction"},{"title":"API authentication","href":"/api-reference/authentication"},{"title":"API errors","href":"/api-reference/errors"},{"title":"Send an OTP","openapi":"openapi.yaml POST /v1/otp/send","href":"/api-reference/otp/send"},{"title":"Verify an OTP","description":"POST /v1/otp/verify: constant-time check. Wrong codes with attempts left are 200 valid:false.","openapi":"openapi.yaml POST /v1/otp/verify","href":"/api-reference/otp/verify"},{"title":"Get an OTP","openapi":"openapi.yaml GET /v1/otp/{id}","href":"/api-reference/otp/get"},{"title":"Send an SMS","description":"POST /v1/sms/send: transactional message, same routing and credits as OTP.","openapi":"openapi.yaml POST /v1/sms/send","href":"/api-reference/sms/send"},{"title":"Get an SMS","openapi":"openapi.yaml GET /v1/sms/{id}","href":"/api-reference/sms/get"}]},{"group":"Resources","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Get an OTP - Robase","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}