curl --request POST \
--url https://api.phonovation.com/v1/campaign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "Your appointment is tomorrow at 10:30.",
"from": "CompanyName",
"recipientInfo": [
{
"msisdn": "353871234567"
}
]
}
'{
"id": "ffd14db7-e526-4d69-b41e-ec5e38bc04dd",
"message": "Campaign received to be processed"
}{
"title": "Validation Error",
"status": 400,
"detail": "<dynamic validation or campaign failure message>"
}{
"title": "Forbidden",
"status": 403,
"detail": "Authenticated user is not a recognized client administrator"
}Create and send an SMS campaign
Send an SMS campaign immediately or schedule it for later.
curl --request POST \
--url https://api.phonovation.com/v1/campaign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "Your appointment is tomorrow at 10:30.",
"from": "CompanyName",
"recipientInfo": [
{
"msisdn": "353871234567"
}
]
}
'{
"id": "ffd14db7-e526-4d69-b41e-ec5e38bc04dd",
"message": "Campaign received to be processed"
}{
"title": "Validation Error",
"status": 400,
"detail": "<dynamic validation or campaign failure message>"
}{
"title": "Forbidden",
"status": 403,
"detail": "Authenticated user is not a recognized client administrator"
}sendAt is always interpreted as Irish local time (Europe/Dublin). Do not include Z or a numeric UTC offset. For example, 2030-07-08T15:00 schedules delivery for 15:00 in Ireland, regardless of where the request originates. Convert the intended time to Irish local time before sending the request.Scheduling from outside Ireland
Phonovation does not use your device, server, account, or recipient timezone. It reads the date and clock time insendAt as the time in Ireland.
Prefer yyyy-MM-ddTHH:mm. A space instead of T and optional seconds are also accepted. Supplied seconds are ignored, and the campaign is scheduled at the start of the minute.
| Desired local delivery time | Irish time to submit | sendAt |
|---|---|---|
UK: 8 July 2030 at 15:00 (Europe/London) | 8 July at 15:00 | 2030-07-08T15:00 |
China: 8 July 2030 at 15:00 (Asia/Shanghai) | 8 July at 08:00 | 2030-07-08T08:00 |
China: 15 January 2030 at 15:00 (Asia/Shanghai) | 15 January at 07:00 | 2030-01-15T07:00 |
New York: 8 July 2030 at 15:00 (America/New_York) | 8 July at 20:00 | 2030-07-08T20:00 |
Europe/Dublin in your date-time library. Do not hard-code an offset: Ireland changes offset during the year, and other countries may change clocks on different dates.
sendAt or send null to send immediately. Empty and whitespace-only strings are invalid.Authorizations
A UI-generated Phonovation Personal Access Token (PAT) is the recommended option for most integrations. OAuth/OIDC JWT access tokens are also accepted when an OAuth lifecycle is required.
Send either token as:
Authorization: Bearer <token>
PAT values begin with phv_pat_. Generate a PAT once in the Phonovation UI,
store it securely, and reuse it across requests. You do not need to generate
or refresh a token for every SMS. Preserve the exact casing in
Bearer phv_pat_....
Body
The message, sender, recipients, and optional campaign settings. Any
sendAt value must contain the intended Irish local date and time.
Everything Phonovation needs to create, schedule, or save an SMS campaign.
The message your recipients will receive. It must include at least one visible character.
Phonovation automatically detects the message encoding and calculates how many SMS parts will be sent and billed:
- GSM-7: up to 160 characters in one part, then 153 per part.
- UTF-16: up to 70 characters in one part, then 67 per part.
- GSM-7 extended characters count as two character units.
To improve handset compatibility, Phonovation replaces these typographic characters before sending:
- typographic single quotes to
' - typographic double quotes to
" - en/em dashes to
- - ellipsis to
. - bullet to
*
The API does not automatically add opt-out or footer text, so include any wording required for your use case and compliance obligations.
1 - 2000\S"Your appointment is tomorrow at 10:30."
The sender name or number recipients see on their phone.
Leading and trailing spaces are removed automatically.
- Numbers-only sender IDs may contain up to 20 digits.
- All other sender IDs may contain up to 11 characters.
- Numbers from
50000through59999are reserved and cannot be used.
Non-numeric sender IDs are not limited to letters and numbers by this API.
For Irish recipients, the sender ID must be on the permitted sender list. Recipients for whom the sender is not permitted are skipped.
1\S"CompanyName"
One or more people who should receive the campaign. The API does not set a maximum recipient count.
Invalid or duplicate numbers may be skipped while valid recipients continue. Duplicate detection happens after phone-number normalization, and the first occurrence is kept.
1Show child attributes
Show child attributes
A short name to help you identify the campaign in reporting. If omitted,
it defaults to API Broadcast.
Keep the name to 30 characters or fewer. null, empty, and spaces-only
values are rejected. Valid names are stored exactly as supplied.
1 - 30\S"Summer Promotion"
When the campaign should be sent, interpreted exclusively as Irish local
time in the Europe/Dublin timezone.
Phonovation reads the date and clock portion exactly as Irish time. It
does not use the timezone of the caller, server, account, or recipient,
and it does not convert the value from UTC. A request sent from China
with 2030-07-08T15:00 schedules the campaign for 15:00 in Ireland,
not 15:00 in China.
Prefer yyyy-MM-ddTHH:mm, for example 2030-07-08T14:30.
These forms are accepted:
yyyy-MM-ddTHH:mmyyyy-MM-ddTHH:mm:ssyyyy-MM-dd HH:mmyyyy-MM-dd HH:mm:ss
If seconds are supplied, they are ignored and the scheduled time is normalized to the start of the minute.
Example conversions for 8 July 2030 at 15:00 in the source country:
-
United Kingdom (
Europe/London) becomes2030-07-08T15:00in Ireland. -
China (
Asia/Shanghai) becomes2030-07-08T08:00in Ireland. -
New York, United States (
America/New_York) becomes2030-07-08T20:00in Ireland. -
Do not include
Z, another timezone designator, or a numeric UTC offset. -
If the intended send time is outside Ireland, convert it to
Europe/Dublinbefore constructing this value. -
Ireland uses GMT (UTC+0) during part of the year and Irish Standard Time (UTC+1) during part of the year. Use a timezone-aware library; do not hard-code a single UTC offset.
-
Omit the field or send
nullto send immediately. Empty and whitespace-only strings are invalid. -
Past dates are accepted.
-
The API does not set a maximum scheduling horizon.
^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2})?$"2030-07-08T14:30"
"2030-07-08T14:30:45"
"2030-07-08 14:30"
"2030-07-08 14:30:45"
Set to true to save the campaign as a draft. A draft has no delivery
summary until it is marked ready.
Optional saved-list flag. It is passed through as shouldSaveList and
defaults to false. Saved-list behaviour is not part of the current
public API contract, so leave this as false unless Phonovation has
enabled the feature for your integration.
Response
The campaign is accepted for background processing.
Confirms that the campaign request was accepted and queued.
Public campaign UUID. Store it so you can request delivery totals later.
"ffd14db7-e526-4d69-b41e-ec5e38bc04dd"
Human-readable confirmation for logs or troubleshooting. A successful
202 response returns Campaign received to be processed.
"Campaign received to be processed""Campaign received to be processed"