Reference
Supported countries, SMS format, security details, and frequently asked questions.
Supported Countries
nudge.sh can deliver SMS notifications to phone numbers in the following countries. If your country is not listed, let us know and we will look into adding it.
| Country | Code | Prefix |
|---|---|---|
| United States | US | +1 |
| Canada | CA | +1 |
| United Kingdom | UK | +44 |
| Germany | DE | +49 |
| France | FR | +33 |
| Australia | AU | +61 |
| New Zealand | NZ | +64 |
| India | IN | +91 |
| Japan | JP | +81 |
| South Korea | KR | +82 |
| Singapore | SG | +65 |
| Hong Kong | HK | +852 |
| Taiwan | TW | +886 |
| Brazil | BR | +55 |
| Mexico | MX | +52 |
| Netherlands | NL | +31 |
| Sweden | SE | +46 |
| Norway | NO | +47 |
| Denmark | DK | +45 |
| Finland | FI | +358 |
| Ireland | IE | +353 |
| Austria | AT | +43 |
| Switzerland | CH | +41 |
| Belgium | BE | +32 |
| Italy | IT | +39 |
| Spain | ES | +34 |
| Portugal | PT | +351 |
| Poland | PL | +48 |
SMS Message Format
By default, every nudge SMS follows this format:
✓ {status} ({duration})
{url}For example, a nudge with status=deployed and duration=124 would produce:
nudge.sh/r/k9x2m7
Standard SMS messages are limited to 160 characters. The default format is designed to stay well within this limit. If you use a custom message, keep it under 160 characters or it will be truncated by the carrier.
You can override the default format entirely by passing the message parameter. When message is set, the status and duration fields are ignored in the SMS body:
# Custom message override
curl -s https://nudge.sh/$NUDGE_TOKEN \
-d status="done" \
-d message="ML training complete. Accuracy: 97.3%"nudge.sh/r/p4w8n1
Security
nudge.sh is designed with security as a priority. Here is how your data is protected:
| Measure | Details |
|---|---|
| Token Hashing | API tokens are hashed with SHA-256 before storage. The plaintext token is shown once at creation and never stored or retrievable afterward. |
| Output Encryption | Command output sent via the output parameter is encrypted at rest using AES-256. Only the authenticated token holder can view it through the result link. |
| HTTPS Only | All API endpoints enforce HTTPS. Plaintext HTTP requests are rejected. TLS 1.2+ is required for all connections. |
| No Plaintext Credentials | No passwords, tokens, or secrets are stored in plaintext anywhere in the system. All sensitive values are hashed or encrypted before persistence. |
Anyone with your API token can send nudges to your phone. Store it in environment variables or a secrets manager -- never commit it to version control.
Frequently Asked Questions
What if my phone is off when a nudge is sent?
SMS messages are queued by the carrier for up to 24 hours. If your phone comes back online within that window, you will receive the message. After 24 hours, undelivered messages are discarded by the carrier.
Can I send nudges to multiple phone numbers?
Each API token is linked to a single verified phone number. To send nudges to multiple phones, create a separate token for each number in your dashboard. You can then use different tokens in different scripts or environments.
Is there a free tier?
Yes. Every new account receives 5 free SMS credits -- no credit card required. This is enough to try nudge.sh with your CI pipeline, cron jobs, or long-running scripts before committing to a paid plan.
What counts as a credit?
One SMS message equals one credit. Each successful call to the /v1/nudge endpoint that results in a delivered SMS consumes one credit, regardless of message length (within the 160 character limit).
Can I use webhooks instead of SMS?
Not yet. Webhook delivery is on the roadmap and coming soon. For now, SMS is the only notification channel. Follow the getting started guide to set up SMS notifications.
Where can I find the full API documentation?
See the API Reference for complete endpoint documentation, including request and response schemas, error codes, and rate limits.