Skip to content
Akedly
Your own SMS provider

Build an integration

An integration tells Akedly how to call your SMS provider's API. Build it once in the BYO SMS registry, test it, and activate it.


Where to build it

The SMS Integrations page holds your account-level registry. Select New integration to open the builder.


Step 1: Basics

Identify the integration in the registry.

ControlEffect
Namestring · required

The integration name shown in the registry and in verification history entries that used it.

Descriptionstring · optional

A short note about the provider, environment, or intended coverage.


Step 2: Coverage & failure behavior

Choose where the integration can route and what Akedly should do if its request chain fails. On a managed Vodafone integration neither is yours to set — coverage is fixed to Egypt and the failure behaviour is Akedly's.

ControlEffect
Send to all countriestoggle

Turn on for catch-all coverage — the integration can serve any destination country. Turn off to select specific countries.

Countriessearchable picker

Appears when Send to all countries is off. Select from Akedly's routable catalog of ISO-coded countries. A managed Vodafone integration is fixed to Egypt and rejects any other coverage.

If your API failsselect

For OTP sends, Fall back to Akedly's SMS (recommended) handles a failed request chain by sending through Akedly's own SMS providers at their normal SMS rates. Strict fails the SMS instead and lets the normal channel fallback chain continue. Utility SMS always treats a failed chain as strict and does not use an Akedly SMS fallback.


Step 3: Secrets

Store provider credentials once, then reference them from any request-chain field.

ControlEffect
Secret namestring

A stable name for the credential, such as apiToken.

Secret referencetemplate

Reference the credential anywhere in a step as {{secrets.name}}, replacing name with the stored secret name.

Add secretbutton

Adds another named, encrypted credential to the integration.


Step 4: Request chain

Define the ordered HTTP requests Akedly fires to send one SMS. Multi-step flows can fetch an auth token before calling the provider's send API. A managed Vodafone integration has no request chain of yours — Akedly's adapter carries the send, and this step does not apply.

ControlEffect
Step namestring · optional

A label that describes the request, such as Get auth token or Send SMS.

Requestmethod + URL

Select the HTTP method and enter the provider's HTTPS URL.

Body formatselect

Choose how the request body is encoded: JSON, Form-encoded, Raw text, or No body.

Body fieldseditor

Enter the data your provider expects. For a JSON body, add key/value Fields or switch to Manual JSON to write the template directly. Template variables are allowed in the values.

Send stepradio

Marks the one request whose success means the SMS was accepted.

Add stepbutton

Appends another request to the chain.

Template variables

Use these placeholders in URLs, headers, query parameters, and body templates.

VariableValue
{{otp}}The OTP code for verification sends; for one-way utility SMS, the complete message text
{{message}}The same message value as {{otp}}: the OTP code for verification sends or the complete utility message
{{phone}}Destination number in international format (+2010…)
{{phoneLocal}}Destination number as international digits, including the country code, with + removed
{{companyName}}Your company name, as set on your account
{{locale}}The normalized OTP locale for verification sends
{{otpMessage}}The localized OTP message for verification sends
{{transactionId}}The Akedly transaction ID for this send
{{vars.name}}A value extracted from an earlier step's response
{{secrets.name}}A secret you stored on this integration

Advanced options (per step)

Expand Advanced — headers, auth & response handling inside each step.

ControlEffect
Headerskey/value

Add custom request headers with Add header. Template variables are supported.

Query parameterskey/value

Add URL query values with Add parameter.

Authenticationselect

Choose None, Bearer token (token), Basic auth (username and password), or API-key header (header name and value). Template variables are supported in credential values.

Success status codescomma-separated

Defaults to 200, 201, 202. A status outside the list counts as a failed step.

Retries on failurenumber

Appears only on the first step, and only when a later step is the send step. If that first step fails with a request or status error, Akedly retries it up to 3 times (default 0) before the chain fails. The send step itself is never retried, and retries still count against the 5-second chain limit.

Extract from the responsemapping

Use Add extraction to store a response value as {{vars.name}} for a later step. Choose JSON path, Response header, Status code, or Regex. Enter a dotted path, header name, or regex pattern as appropriate. A JSON path accepts bracket indexes for arrays (data[0].id) as well as dotted segments; a regex uses capture group 1 when present, otherwise the full match. Status code uses the response status.


Chain execution limits


What's next

After you build the integration, test and activate it. An active integration does not route by itself: BYO SMS must also be enabled for the pipeline. See Enable on pipelines & cloning.