Getting a Signal registration code onto a number your team controls

OTP Gateway from $0.20 per code198 countriesAPI id: signalDedicated US/CA numbers from $1.95/month
Quick answer

To receive a Signal verification code with OTP Route, order a number for the signal service in the OTP Gateway, enter it on Signal's registration screen, and read the code in the dashboard or collect it through the API and a signed webhook. Pricing starts at $0.20 per code, and if no SMS arrives within 20 minutes the full amount is refunded to your wallet.

Why would a team need a Signal phone number that isn't anyone's own?

The usual trigger is internal. A security or incident-response team wants a shared Signal account for coordination, or a newsroom, support desk or privacy-minded founder wants a work identity that is not tied to a staff member's personal SIM. Signal registers every account against a phone number, so some number has to receive that first code. A second group is product and IT teams who document or test onboarding procedures, such as a provisioning runbook that installs Signal on company phones and needs Signal SMS verification for testing.

Signal asks for phone verification at registration, when the app is reinstalled or moved to a new primary device, and when an account is registered again after a lapse. Its optional Registration Lock adds a PIN check on top of the SMS step, and usernames let people chat without revealing the number, but the account still rests on a number that can receive codes. That fact decides which OTP Route product you should choose.

One-time code or a number you keep: which suits a Signal account?

The OTP Gateway gives you a virtual number for Signal that receives a single verification code inside a 20-minute window. That fits a one-off rehearsal of a registration procedure. A Signal account that has to sign in again later, after a reinstall or on a replacement handset, needs another code on the same number, and a one-time activation cannot provide it.

For long-lived accounts a Dedicated Number is the better match. These lines are available instantly in the United States and Canada from $1.95/month, renew from the wallet, show inbound SMS in the dashboard and forward it through the number.sms_received webhook, and can be released whenever you like. Compare the two in temporary vs dedicated numbers and on the virtual numbers page. Every other country is limited to one-time activations, at least through the self-serve dashboard.

How does the Signal verification code API flow work?

Calls go to https://otproute.com/api/v1 with a Bearer key (prefix or_live_) created in the Developer console. Signal's service id is signal.

  1. Decide which country should match the account's market and look up its id with GET /api/v1/countries.
  2. Query GET /api/v1/prices?country=<id>&service=signal for the live price and availability.
  3. Order with POST /api/v1/activations using {"service": "signal", "country": "<id>"}, and store the activation id it returns.
  4. Type the number into Signal's registration screen and request the code by SMS.
  5. Let the activation.sms_received event reach your webhook, or poll GET /api/v1/activations/{id} at a modest interval until the code appears.
  6. If the attempt is dropped, call POST /api/v1/activations/{id}/cancel so the amount goes back to the wallet.

Each account may hold 10 keys and 5 webhook endpoints and send 300 requests per minute. Endpoint reference material is in the docs.

How should a webhook handler treat incoming Signal codes?

Every webhook request includes X-OTPRoute-Signature: t=<unix>,v1=<hex>. Build the string <t>.<raw body>, compute HMAC-SHA256 with that endpoint's secret, and compare it with v1 using a timing-safe comparison. Reject requests with an old timestamp, and never parse and re-encode the body before checking it.

Make the handler idempotent by recording each activation id once it has been processed, because deliveries can be retried. Treat activation.expired and activation.cancelled as terminal states that close the step in your runbook. A Signal code unlocks a private messaging account, so write it only where it is needed and keep it out of plain-text logs. Polling stays a valid fallback where no public endpoint exists, for example on a laptop behind a corporate firewall. The HMAC webhook security guide goes further.

Which countries can receive Signal OTP codes?

You can receive Signal OTP codes on 198 country routes. Among them are the United States, Canada, the United Kingdom, Germany, the Netherlands, Switzerland, Sweden, Ukraine, India, Japan, Brazil, Mexico, Kenya, Nigeria and the Philippines.

Choose the country by purpose, not by price alone. An account representing a Berlin office should carry a German number, and a runbook test meant to cover non-US formats needs a route outside the North American plan. Inventory differs by route and by hour, so read live availability before every order.

In the dashboard the steps are short: open the OTP Gateway, choose Signal, pick a country, check the price and order. The code appears next to the Signal phone number as soon as it is received.

Why might a Signal code fail to arrive?

A few causes come up repeatedly. Signal may decline numbers it treats as virtual, so a refusal is possible on any route. The registration screen also offers a voice call; pick the SMS option, because an activation captures text messages. Route inventory and sender behavior also shift during the day.

What to do next:

  • Leave the 20-minute window open before concluding the code is lost.
  • Try again later, or with a different country route.
  • Don't re-order rapidly, since repeated registration attempts can run into rate limits on Signal's side as well.
  • Rely on the refund: no SMS inside the window, or a cancellation, returns the full amount to your wallet.

What does responsible use of a Signal number look like?

Follow Signal's terms. Register one account per real person, team or business that will actually use it, and keep it under your organisation's control. OTP Route exists for testing and operating your own legitimate accounts and products, never for mass registrations, impersonation or getting past a suspension, and its Acceptable Use Policy applies to every order. Signal is a trademark of its owner, and OTP Route has no affiliation with it.

Billing comes from one prepaid USD wallet funded by card or USDT/USDC, with no monthly fee, a PDF invoice by email for each top-up, and sandbox mode on request so integration tests can run on simulated numbers and codes.

Frequently asked questions

Can I receive a Signal OTP on a virtual number?

Often, but not on every attempt: Signal may reject numbers it considers virtual. If no code arrives within 20 minutes, the full amount returns to your wallet.

What is the service id for Signal in the API?

It is signal. Pair it with a country id from GET /api/v1/countries when you call the prices and activations endpoints.

Should a team's permanent Signal account use a one-time number?

No. Signal sends a fresh code when the account is registered on another device, so a long-lived account belongs on a Dedicated Number in the US or Canada, from $1.95/month.

Does Signal still need a phone number if we use usernames?

Yes. Usernames hide the number from contacts, but registration still depends on a phone number that can receive a code.

Can I turn on Registration Lock for an account on an OTP Route number?

Yes, it is a Signal setting protected by a PIN you choose. Keep that PIN in your team's password manager, since re-registering a locked account requires it along with the number.

How much does a Signal verification code cost?

From $0.20 per code. The exact amount depends on the country and is returned by GET /api/v1/prices and shown in the dashboard before you order.

Can I test the integration without spending wallet funds?

Yes. Ask for sandbox mode on a development account; it returns simulated numbers and codes for end-to-end tests.

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.