Set up AmazeSMS
The GET /api/sms gateway: key, to, from, body and the DLT ids as parameters. smsyra answers exactly as AmazeSMS would, keeps the text in your inbox, checks it against your DLT templates — and sends nothing.
What to change
https://api.shriradhatechnologies.com/p/amazesms/api/sms- Method
- GET or POST
- Your key goes in
- the key parameter
- Instead of
https://api.amazesms.com/api/sms
- Swap the base URL https://api.amazesms.com/api/sms for the smsyra URL above.
- Put your smsyra key in the key parameter, where your AmazeSMS key goes.
- Keep sending to, from, body, entityid and templateid as you do now — smsyra checks the text against the template id.
Need a key? Create a free workspace and make one on its API keys page — it starts with smy_.
Send a test text
curl -G "https://api.shriradhatechnologies.com/p/amazesms/api/sms" \
--data-urlencode "key=smy_YOUR_KEY" \
--data-urlencode "to=9876543210" \
--data-urlencode "from=ACMEOT" \
--data-urlencode "entityid=1001234567890123456" \
--data-urlencode "templateid=1007123456789012345" \
--data-urlencode "body=482913 is your ACME login code. It is valid for 10 minutes."What smsyra answers
The same status and body AmazeSMS gives when it takes a text (HTTP 200), so your code carries on as it would in production:
{"status":"success","messageid":"412093857261038475"}The text itself shows up in your inbox the moment it arrives, with the DLT result: Matched, Mismatched (with the first character that differs), or No template.
Test the failures
Each API key has a failure mode, so you can test your retries and error handling without breaking anything. More about failure modes.
| When | smsyra answers |
|---|---|
| A key that is unknown or revokedYour provider's authentication error. Nothing is kept. | HTTP 200{"status":"error","message":"Invalid key"} |
| Failure mode: Provider errorThe provider's own error. The text is kept as “Simulated error”. | HTTP 200{"status":"error","message":"Service temporarily unavailable"} |
| Failure mode: Provider downA 503, as if the provider were down. The text is kept as “Simulated outage”. | HTTP 503{"error":"Service Unavailable"} |
| Failure mode: SlowWaits as long as you set (up to 30 seconds), then answers normally. | The normal answer (HTTP 200), after the wait. |
| Strict DLT on, and the text doesn't matchRefused the way the provider refuses a DLT failure. The text is kept as “Refused (strict DLT)”. | HTTP 200{"status":"error","message":"DLT template mismatch"} |
Read the OTP in your tests
Ask for the newest code sent to a number. The call waits up to 30 seconds for the text to arrive, so a test never sleeps and polls. It takes your key as Authorization: Bearer smy_…, whichever provider sent the text. The OTP API in full.
curl -G "https://api.shriradhatechnologies.com/v1/otp/latest" \
-H "Authorization: Bearer smy_YOUR_KEY" \
--data-urlencode "to=9876543210" \
--data-urlencode "wait=25"It answers HTTP 200 with the code, or 404 NO_MESSAGE after the wait:
{"messageId":"0193…","to":"+919876543210","from":"ACMEOT","body":"482913 is your ACME login code. It is valid for 10 minutes.","code":"482913","codeMethod":"template","candidates":["482913"],"receivedAt":"2026-11-15T10:20:30Z","templateId":"1007123456789012345","dlt":{"status":"MATCHED"}}Other providers
MSG91 (Flow v5) · Fast2SMS · Twilio · Exotel · smsyra JSON