Collecting Yemeni (+967) verification codes over an API

Calling code +967OTP Gateway from $0.20 per codeDedicated numbers: US & Canada onlyAPI id: ye
Quick answer

With OTP Route you can receive Yemeni (+967) SMS verification codes on a single-use OTP Gateway number and read them in the dashboard, by polling the REST API, or from a signed webhook. Pricing begins at $0.20 per code with the exact rate supplied live by the API, and an activation that receives no SMS within its 20-minute window is refunded to your wallet.

What is the shortest API path to a +967 code?

Point your client at https://otproute.com/api/v1 with a Bearer key from the Developer console; keys carry the or_live_ prefix. Yemen's country id is ye.

  1. Fetch prices with GET /api/v1/prices?country=ye&service=<id>; the response tells you what the code will cost and whether the route is open.
  2. Create the order: POST /api/v1/activations with {"service": "whatsapp", "country": "ye"}. You get back an activation id and the +967 number.
  3. Type or inject the number into the verification step of your own app.
  4. Retrieve the code from GET /api/v1/activations/{id} or from a webhook event.
  5. Release an unfinished order with POST /api/v1/activations/{id}/cancel.

GET /api/v1/services and GET /api/v1/countries change rarely, so cache them for the day. Calling GET /api/v1/balance before a batch lets the job stop early when funds run low. The rate limit of 300 requests per minute applies per account, and up to 10 keys can be issued. See the integration guide for a worked example of this Yemen OTP API flow.

How do I verify webhook deliveries for Yemen activations?

Register an HTTPS endpoint in the Developer console (an account may have five) and subscribe to activation.sms_received, plus activation.expired and activation.cancelled so your job knows when to stop waiting.

Signature checks follow one recipe. Split X-OTPRoute-Signature into t and v1, compute HMAC-SHA256 of the string <t>.<raw body> using the endpoint secret, and compare the result to v1 with a constant-time function. Refuse the request if the timestamp is older than your tolerance. Because a delivery may be retried, make the handler idempotent: store the activation id and ignore repeats. Securing OTP webhooks with HMAC covers edge cases such as clock drift.

What should my parser expect from Arabic-language messages?

Arabic is Yemen's official language, so many services send the surrounding text in Arabic. That has practical consequences for anyone testing their own messages: Arabic script needs UCS-2 encoding, which limits one SMS segment to 70 characters, and right-to-left text can shift where the code appears in a notification. Some templates put the digits before the sentence, others after it.

Write the extraction step to find the run of digits whatever words surround it. It is also sensible to normalize Arabic-Indic numerals (٠ to ٩) to ASCII digits in case a sender uses them. Teams run these checks when localizing an app for Arabic speakers, supporting Yemeni customers who live across the Gulf, or confirming that a regional support account still verifies. OTP Route returns the message as it was received, so what you parse in a test is what a user would get.

How are Yemeni phone numbers formatted?

The country code is +967. Mobile numbers have nine digits after it and begin with 7, giving the shape +967 7XX XXX XXX. If a user enters a domestic 0 in front, strip it before saving, and persist the E.164 string without separators; local formatting belongs in the UI only.

Useful validation cases for a +967 number for testing:

  • The user picks +967 from the country list and then types the full number including the code again.
  • A number is pasted with Arabic-Indic digits copied from a contact card.
  • Spaces or dashes appear between digit groups.

Each of these should end up as the same stored value, which keeps lookups and deduplication reliable.

Which services currently route to +967 numbers?

Yemen has more than 1,700 services on the OTP Gateway. Frequently used entries in the live snapshot include WhatsApp, Telegram, imo, Facebook, Instagram, TikTok, Snapchat, Google (Gmail & YouTube), X (Twitter), Microsoft & Outlook, Signal, Discord and Amazon.

Availability is a moving target, so build suites to ask the API first. People outside engineering can do the same job from the dashboard: open an account with an email code or Google sign-in, top up, choose Yemen and the service, then copy the Yemen verification number into the app and wait for the code on the activation page.

Why might a Yemen code fail to land, and what's the fix?

Each order lives for 20 minutes. If no SMS arrives, or you cancel before it does, the whole amount returns to your wallet automatically; you are only billed for codes that arrive.

Typical causes and responses:

  • The service is slow at that moment: let the window run before giving up.
  • The service refuses virtual numbers: check its policy; the refund handles the failed attempt.
  • The route is busy: try later or with another service route.
  • A script re-orders the instant it misses: add backoff so it does not hammer the route.

Use these numbers only for your own products and legitimate accounts, follow each service's terms, and stay within OTP Route's Acceptable Use Policy.

Can I hold a Yemeni number long term, and how is it billed?

Not through self-serve. Dedicated Virtual Numbers are offered only in the United States and Canada, bought instantly from $1.95/month. Teams that need a lasting +967 line can email [email protected]; whether one can be provided depends on local rules and is never certain.

The OTP Route wallet is prepaid in USD with no subscription and no plan. Fund it by card or USDT/USDC, and a PDF invoice is emailed for every top-up. Check current rates on pricing, and request sandbox on a development account if you want simulated numbers and codes for integration work.

Frequently asked questions

Can I test an Arabic-language sign-up flow with a Yemeni number and no local SIM?

Yes. Order an OTP Gateway number with country ye, enter it in your own app, and read the Arabic or English message in the dashboard or via webhook.

What is the price of a +967 verification code?

It starts from $0.20 per code and varies by service; GET /api/v1/prices returns the live figure. Codes that never arrive are refunded when the 20-minute window ends.

How do I extract the code if the SMS reads right to left?

Search for the digit sequence rather than a sentence pattern, and convert Arabic-Indic numerals to ASCII first. That works whichever side of the text the code sits on.

Is the +967 number mine to keep?

No, an OTP Gateway number covers a single verification. Lasting numbers are a US and Canada product; for Yemen, email support to ask.

Can I integrate without spending wallet balance?

Yes, ask for sandbox on a development account. It returns simulated numbers and codes, which is enough to test polling, webhooks and error handling.

What country id does the API use for Yemen?

It is ye. Pass it in price lookups and in the JSON body of POST /api/v1/activations.

Why did a service turn down my Yemeni number?

Some services do not accept virtual numbers. Cancel or let the activation expire, and the money goes back to your wallet automatically.

Service names are trademarks of their respective owners. OTP Route is not affiliated with them. Use numbers lawfully, follow each service's terms and our Acceptable Use Policy.

Route your first OTP in minutes

Create a free account, top up your USD wallet and order a number from the dashboard or the API. No monthly fee.