- Beta
- SMS one-time passcodes
- Australian mobiles
CrazyPINConfirm it's really them, with one SMS
CrazyPIN sends a six-digit one-time passcode (OTP) to an Australian mobile and checks the code your customer types back. Use it for signups, logins, password resets, phone number changes and high-value transactions, all through one simple API.
- Six-digit codes, five-minute default expiry
- Sent from your own number or approved sender name
- No extra fee for checking a code
- Daily SMS budget per application
- Safe retries built in
- Australian mobiles only
Why CrazyPIN
A verification step should protect your customers and your SMS bill. CrazyPIN is built around both.
Built-in spending protection
Every application gets its own daily SMS budget. If a bot or a bug starts firing off codes, sending stops when the budget is reached. Per-mobile limits stop one phone number being flooded with codes, and wrong guesses are limited so codes cannot be brute-forced.
Resets at midnight AEST. At 200, sending stops.
-
Your number, your brand
Codes are sent from a mobile number on your account or an approved SMS sender name, so customers see a sender they recognise. The message names your business, using the brand name you choose.
-
Safe to retry
Networks time out. CrazyPIN uses idempotency keys, so repeating a request after a timeout returns the original result instead of sending a second SMS or counting a second guess.
-
Honest status
Sending an SMS and confirming a code are tracked separately. Your application always knows whether the message was submitted, delivered or failed, whether the code is still pending, and how many attempts remain.
-
Nothing sensitive in responses
API responses show a masked mobile number and never include the code itself.
How it works in 4 steps
Set up once in MyAccount, then two API calls per verification.
-
Choose a sender
Pick an active Australian mobile number on your account or an approved SMS sender name.
-
Create an application profile
Set your SMS brand name, how long codes last (two to ten minutes), how many wrong guesses are allowed (three to five) and a daily SMS budget. New profiles start switched off so nothing sends until you are ready.
-
Send a code
Your server calls
POST /verificationswith the mobile number and what the code is for: signup, login, password reset, phone change or transaction. -
Check the code
When your customer types the six digits, your server calls
POST /verifications/{id}/checks. A correct code returnsvalid: trueonce, and your application completes the original action.
Developer quick start
Two requests: send a code, then check it. Find your API key in MyAccount under CrazyPIN, API Management.
curl -X POST "https://api.crazytel.io/api/v1/verify/verifications" \
-H "x-crazytel-api-key: your_api_key" \
-H "Idempotency-Key: a-new-unique-value-for-each-send" \
-H "Content-Type: application/json" \
-d '{
"profile_id": "YOUR_PROFILE_ID",
"to": "0491570006",
"channel": "sms",
"purpose": "signup",
"reference": "your-flow-reference"
}'
curl -X POST "https://api.crazytel.io/api/v1/verify/verifications/VERIFICATION_ID/checks" \
-H "x-crazytel-api-key: your_api_key" \
-H "Idempotency-Key: a-different-unique-value-for-this-check" \
-H "Content-Type: application/json" \
-d '{"code": "012345"}'
{
"id": "44444444-4444-4444-8444-444444444444",
"status": "approved",
"valid": true,
"to_masked": "+614*****006",
"purpose": "signup",
"check_attempts_remaining": 5,
"expires_at": "2026-10-21T04:05:00Z",
"verified_at": "2026-10-21T04:01:12Z"
}
- Mobile numbers can be written as
04xxxxxxxx,614xxxxxxxxor+614xxxxxxxx. - Keep codes as text so leading zeros survive.
012345is not12345. - Use a new
Idempotency-Keyfor each send and each check. Repeat the same key only to retry a timed-out request. - Not ready to code? Use Test Verification in MyAccount to send a real code to your own mobile.
- Full endpoint reference in the CrazyPIN API docs.
Features
Everything a verification step needs, and nothing that adds to your bill.
| Feature | Details |
|---|---|
| Six-digit codes | Leading zeros preserved. Only the newest code works, and a correct code can be used once. |
| Configurable lifetime | 2 to 10 minutes per profile (5 minutes by default). Resending never restarts the clock. |
| Wrong-guess limit | 3 to 5 attempts per verification, counted across resends. |
| Resend and cancel | Up to three SMS per verification, with a short wait between sends. Cancel a pending code at any time. |
| Purpose labels | Signup, login, password reset, phone change or transaction, so a code can only complete the action it was created for. |
| Daily SMS budget | Set a per-profile ceiling. Resets at midnight AEST. |
| Per-mobile protection | Sending and guessing limits apply across all your profiles for each mobile number. |
| Idempotent requests | Retry timed-out sends, resends and checks safely with an Idempotency-Key. |
| 30-day status history | Look up any verification for 30 days. |
| Live delivery status | See whether the SMS was submitted, delivered or failed. |
| Portal test tool | Send a real test code and check it from MyAccount before you write a line of code. |
Where businesses use it
Anywhere you need to know the person has the phone in their hand.
-
Account signup
Confirm a new customer owns the mobile number they entered.
-
Two-step login
Add a second step to your own app's login.
-
Password reset
Send a code before allowing a reset (see the safety note below).
-
Changing a phone number
Confirm the new number belongs to the customer before it replaces the old one.
-
Confirming a payment or booking
Add a quick check before a high-value transaction.
-
Cleaning up lead lists
Make sure the mobile on a form is real and reachable.
Safety note: owning a mobile number does not prove who someone is. Don't use an SMS code on its own to approve sensitive account recovery or to establish legal identity.
Pricing
CrazyPIN has no monthly fee and no separate verification fee. You pay your normal Crazytel SMS price for the messages you send.
- Sending a lot of codes? Crazytel Bulk SMS plans, from $19.95 per month, are available from the SMS Center in MyAccount. See the SMS platform page for the full rate table.
- Failed delivery, expired codes, cancelled verifications and wrong codes are not refunded.
- Test Verification in MyAccount sends a real code, so normal SMS charges apply.
Frequently asked questions
Practical answers about codes, limits, sender names and pricing.
Which phones can I send to?
How long does a code last?
Can I resend a code?
How many wrong guesses are allowed?
What does the SMS say?
Can I send from my own number?
What stops someone running up my SMS bill?
Is the code visible anywhere?
Can I try it before building anything?
Is it ready for production?
Start verifying in minutes
Create a profile, send a test code to your own phone, then connect your application.





