Authentication
How do I authenticate with the API?
How do I authenticate with the API?
Authorization header:Are Personal Access Tokens supported?
Are Personal Access Tokens supported?
phv_pat_ can authenticate campaign requests. Generate the token once, store it securely, and reuse it until it expires or is revoked.What causes a 403 Forbidden response?
What causes a 403 Forbidden response?
403 when the token is valid but does not resolve to a recognized Phonovation client administrator.Can I use a PAT to create or revoke other PATs?
Can I use a PAT to create or revoke other PATs?
Which authentication method should I use?
Which authentication method should I use?
Creating campaigns
What endpoint creates a campaign?
What endpoint creates a campaign?
What is the minimum request body?
What is the minimum request body?
Which request properties are supported?
Which request properties are supported?
text,from, andrecipientInfo- an optional
campaignName - an optional Irish-local
sendAtvalue - optional
createAsDraftandshouldSaveListflags - an optional
ClientReferencefor each recipient
Which properties are required?
Which properties are required?
text, from, and recipientInfo are required. Every recipient must have a valid msisdn, and the request must contain at least one recipient.What happens if I omit campaignName?
What happens if I omit campaignName?
API Broadcast. If you explicitly supply null, an empty string, or whitespace, validation fails.How long can the SMS text be?
How long can the SMS text be?
text can contain up to 2,000 characters. It cannot be null, empty, or whitespace-only. Message encoding can affect the number of SMS parts sent and billed; use the SMS Message Lab to inspect it.What are the Sender ID length limits?
What are the Sender ID length limits?
Does the Sender ID need to be registered?
Does the Sender ID need to be registered?
What format should I use for recipient numbers?
What format should I use for recipient numbers?
+, spaces, brackets, or hyphens. A submitted msisdn can contain up to 20 characters and must pass the API’s parsing and normalization rules.What is ClientReference?
What is ClientReference?
ClientReference is an optional reference associated with one recipient. It can contain up to 30 characters and is returned unchanged in the delivery webhook, allowing you to match the receipt with your own customer, order, or appointment.It does not need to be unique. See Client Reference.What format does sendAt accept?
What format does sendAt accept?
sendAt is always interpreted as Irish local time in Europe/Dublin. Prefer yyyy-MM-ddTHH:mm, for example:T and optional seconds are also accepted. Supplied seconds are ignored. Do not include Z or a numeric timezone offset. See Sending SMS for international conversion examples.What happens if sendAt is omitted?
What happens if sendAt is omitted?
sendAt or send null to send immediately. Empty and whitespace-only strings are invalid.Is there a maximum number of recipients?
Is there a maximum number of recipients?
What happens when a recipient is invalid?
What happens when a recipient is invalid?
400 Bad Request if no valid recipient remains.What happens to duplicate recipients?
What happens to duplicate recipients?
ClientReference are kept. If no valid unique recipient remains, campaign creation fails with 400 Bad Request.What happens to opted-out or blocked recipients?
What happens to opted-out or blocked recipients?
400 Bad Request.What happens if a prepaid account has insufficient credit?
What happens if a prepaid account has insufficient credit?
400 Bad Request with a validation response:Campaign responses and status
What does a successful create response look like?
What does a successful create response look like?
202 Accepted:202 confirms that the command was queued. It does not confirm that processing or handset delivery succeeded.What does a validation response look like?
What does a validation response look like?
detail value depends on the validation or campaign-creation failure.Which create-campaign response codes are documented?
Which create-campaign response codes are documented?
202 Accepted, 400 Bad Request, 401 Unauthorized, and 403 Forbidden.How do I retrieve a campaign summary?
How do I retrieve a campaign summary?
What does the campaign summary contain?
What does the campaign summary contain?
Can I retrieve another customer's campaign?
Can I retrieve another customer's campaign?
What happens when a campaign summary cannot be found?
What happens when a campaign summary cannot be found?
404 Not Found. The campaign may be unknown, belong to another account, still be processing, or not yet have a summary.Delivery webhooks
When is a webhook sent?
When is a webhook sent?
What HTTP request is sent?
What HTTP request is sent?
POST to the webhook URL configured in your developer settings.What does the webhook payload look like?
What does the webhook payload look like?
To, From, Status, and ClientReference.What happens when no ClientReference was supplied?
What happens when no ClientReference was supplied?
ClientReference, with a value of null.Does ClientReference round-trip through the webhook?
Does ClientReference round-trip through the webhook?
ClientReference.Which delivery status values can appear?
Which delivery status values can appear?
DELIVRD, DELIVERED, DELIV, UNDELIV, REJECTD, EXPIRED, ABANDONED, and FAILED.This is not a closed list. Treat Status as an open-ended string because raw provider status text can be returned when a normalized value cannot be extracted.Should I only check for DELIVERED?
Should I only check for DELIVERED?
DELIVRD, DELIVERED, and DELIV. The current implementation treats statuses beginning with DELIV as delivered.Can Status contain a raw provider error?
Can Status contain a raw provider error?
NACK/ and NACK/0x000000ff/Unknown Error. Do not restrict Status to a fixed enum.Webhook signatures and retries
How is a webhook authenticated?
How is a webhook authenticated?
How is X-Signature calculated?
How is X-Signature calculated?
sha256=.Which bytes should I verify?
Which bytes should I verify?
Is X-Signature always present?
Is X-Signature always present?
What response should my webhook return?
What response should my webhook return?
2xx status after you have safely stored or queued the event. The full 200–299 range is accepted.Are failed webhook requests retried?
Are failed webhook requests retried?
404 Not Found, 408 Request Timeout, and 5xx responses. It configures three retries after approximately 2, 4, and 8 seconds.A circuit breaker opens for 30 seconds after two transient failures. While open, it can prevent configured retries from becoming actual HTTP requests.Are other 4xx responses retried?
Are other 4xx responses retried?
4xx responses such as 400 Bad Request, 401 Unauthorized, and 403 Forbidden are not retried.Can my webhook receive duplicate deliveries?
Can my webhook receive duplicate deliveries?
Are webhook deliveries ordered?
Are webhook deliveries ordered?