CLI: notp
Everything numberotp.com does, from your terminal: numbers, codes, rentals, top-ups, keys, webhooks and a live dashboard.
1Install
$ brew install DishantSinghDev2/tap/notp$ curl -fsSL https://www.numberotp.com/install.sh | shThe script detects your OS and CPU, checks the download against the release checksums and installs to /usr/local/bin (or ~/.local/bin). Set NOTP_INSTALL_DIR to choose another folder.
Windows: download notp_<version>_windows_amd64.zip (or arm64) from the releases page, unzip it and add the folder with notp.exe to your PATH.
Check it works with notp --version. To update, run brew upgrade notp or the install command again.
2Sign in
notp login # opens numberotp.com — approve this terminal therenotp whoamiNo password is typed into the terminal. Your session is stored in the OS keychain (Keychain, Credential Manager or Secret Service), and notp logout revokes it on the server too.
In CI or on a server, use an API key instead: set NOTP_API_KEY, or run notp login --with-api-key < key.txt. Several accounts? Add --profile work to any command.
3Get a number and its code
notp buy # pick the service and country from a listnotp buy whatsapp --country uk # or say it directlynotp buy telegram --country india --copy # code copied to the clipboard when it landsnotp buy discord.com --country usa --max-price 1.5Services can be a name, a code or a website (discord.com). Countries can be a name (uk, usa), an ISO code (de) or an id (16). Not sure where to buy? notp prices whatsapp --sort price compares price, stock and success rate by country.
| Flag | What it does |
|---|---|
--copy, -c | Copy the code to the clipboard when it arrives |
--max-price | Never pay more than this (USD) |
--pool | auto (best measured delivery), 1, 2 or 3 |
--timeout | Stop waiting after this long (default 20m); the number stays open |
--no-wait | Print the number and return; get the code later with notp wait <id> |
--yes, -y | Skip the confirmation |
4Manage your numbers
notp ls --active # open numbersnotp show <id> # code and every SMSnotp wait <id> # wait for the codenotp resend <id> # another SMS on the same numbernotp finish <id> # done — close itnotp cancel <id> # no SMS? cancel for a full refund5Scripts and CI
export NOTP_API_KEY=notp_…CODE=$(notp buy telegram --country usa -q) || exit $?echo "verification code: $CODE" notp ls --json > numbers.json # --json works on every command| Exit code | Meaning |
|---|---|
| 0 | Success |
| 1 | Error |
| 2 | The number expired or was canceled (it was refunded) |
| 3 | --timeout passed (the number is still open) |
| 4 | Not signed in |
| 64 | Bad usage |
| 130 | Interrupted |
6Rentals, balance and reminders
notp rent telegram --country usa --hours 24 # 2, 4, 12 or multiples of 24 up to 720notp rentalsnotp balancenotp tx # recent transactionsnotp topup 25 # opens checkout, waits for confirmationnotp reminders add whatsapp uk # email me when it's back in stock7For developers: keys, webhooks, events
notp keys create ci --scope read,buy # a limited key for CI or an AI agentnotp webhook set https://example.com/hooks/numberotpnotp listen --forward-to localhost:3000/api/webhook # real, signed events to your dev servernotp events tail --json # every event, livenotp sessions # apps, CLIs and agents signed in to your accountnotp listen only forwards to your own machine (localhost, *.localhost, *.test).
8Shell completion
Homebrew installs completions for you. Otherwise:
notp completion zsh > "${fpath[1]}/_notp" # zshnotp completion bash > /etc/bash_completion.d/notpnotp completion fish > ~/.config/fish/completions/notp.fishnotp with no arguments for a live dashboard, and notp <command> --help for every flag. Building an app instead? See the SDK guide.