Skip to main content

Frequently Asked Questions

Common questions about the Agile Telecom SMS API. For additional support write to help@agiletelecom.com or open the wholesale portal.

Authentication

What authentication method should I use?

API Key authentication is recommended for all new integrations. Include your API key in the X-Api-Key header:

X-Api-Key: your_api_key_here

Basic Auth is also supported for legacy clients.

Where can I find my API key?

Sign in to the wholesale portal and open Settings → API Keys.

Can I have multiple API keys?

Yes. Create independent keys per environment or service. Each key can be revoked without affecting the others.

  1. Settings → API Keys
  2. Generate New Key
  3. Give it a descriptive name and copy the value immediately — you won't be able to view it again.

Is my API key sensitive?

Yes. Treat it like a password — never commit it to source control or expose it in client-side code. Revoke and rotate immediately if it leaks.

Sending SMS

What's the difference between "accepted" and "delivered"?

  • Accepted — The platform has accepted the message for sending. Usually within seconds. Does not mean it reached the handset.
  • Delivered — Confirmed by the operator and/or the handset via a delivery report. Asynchronous, may take longer.

Always use delivery reports to confirm actual delivery.

What's the maximum message length?

It depends on the encoding.

Encoding1 partPer-part in concatenation
GSM-7160 chars153 chars
UCS-2 (Unicode)70 chars67 chars

A single non-GSM character (e.g. an emoji) flips the whole message to UCS-2. See Sending SMS for the full table.

Can I schedule a message?

Yes. Use the scheduling field on a message with an ISO-like timestamp and timezone offset (e.g. 2026-05-20 08:30:00.000+0200). See Sending SMS.

Can I send to many numbers in a single call?

Yes. Add multiple numbers to destinations, or multiple message objects to messages[]. See Sending SMS.

What sender IDs can I use?

  • Numeric — Digits-only short codes or long numbers (replyable if you own the number).
  • Alphanumeric — Up to 11 characters (not replyable; may require pre-registration in some countries).

Delivery Reports

How do I receive delivery reports?

Set enableDelivery: true on your send request and configure a webhook URL in Settings → Webhooks on the wholesale portal. See Delivery Reports.

What should my webhook return?

200 OK within 10 seconds. Anything else is treated as failure and retried with exponential back-off for up to 24 hours.

What does each DLR status mean?

StatusMeaning
DELIVEREDHandset confirmed reception
BUFFEREDStored on the operator, not yet delivered
EXPIREDValidity period elapsed before delivery
REJECTEDOperator rejected the message
UNDELIVERABLEWrong number, blacklisted, opted-out
UNKNOWNNo final state received within the validity window
FAILEDInternal failure before submission

Full reference in Delivery Reports.

Inbound SMS

How do I receive replies?

Rent a number from the wholesale portal and bind it to a webhook URL or email. See Inbound SMS.

My webhook keeps being retried — why?

Your endpoint must respond with exactly +OK (body only) within 30 seconds. Anything else triggers retries — up to 3 attempts, 15 minutes apart, then the message is discarded.

Error Codes

What do the HTTP status codes mean?

CodeMeaningAction
200Accepted (check per-message statusCode)Continue, expect DLRs
400Bad requestFix the payload
401Invalid credentialsCheck API key / Basic Auth
403IP not whitelistedAdd IP to whitelist
408TimeoutRetry with back-off
413Payload too largeSplit the batch
429Rate limit exceededExponential back-off
5xxServer errorRetry with back-off, alert if it persists

Full mapping in Error Handling.

How should I handle rate limiting?

Implement exponential back-off with jitter starting from 1 second. Cap at a few minutes. Honour the Retry-After header when present. See Best Practices.

Network Services

Can I check credit before sending?

Yes. Use the Credit Check API — useful before large campaigns.

Can I validate numbers before sending?

Yes. Use MNP lookup to detect invalid or ported numbers. Cuts wasted sends and improves deliverability stats.

Compliance

How do I handle opt-out?

Implement STOP / UNSUBSCRIBE handling on the inbound webhook, persist the opt-out per phone number, and consult it before every marketing send. See Best Practices.

Is HTTP still supported?

No — from January 15th, 2026 plain HTTP connections are rejected. All API calls must be over HTTPS (TLS). GET requests and form-encoded POST requests are no longer accepted on the SMS endpoint — only POST with JSON over HTTPS.

Support