FlowRunner
PricingContact
Theme
Start Free

GatewayAPI

Messaging

Connect AI agents to GatewayAPI, a Danish SMS gateway delivering messages worldwide. Agents send and schedule SMS, look up delivery status and phone numbers, manage two-way keywords, and check balance and pricing so high-volume texting stays observable.

Verified 13 actions API key available
GatewayAPI website ↗ Platform Documentation ↗ Capability data verified 2026-08-12
A schedule opens the send window, because GatewayAPI signs delivery and inbound payloads to a webhook URL configured in the dashboard and exposes no subscription API, so this connector ships no triggers
Recipients and bodies are assembled with a label naming the campaign, since label is the dimension GatewayAPI attributes cost along
Get Account Balance returns the remaining prepaid credit and the billing currency the quote will come back in
Get Usage By Label returns what the same label cost last period, broken down by destination country and message class
Schedule SMS Message queues the run for a future time and returns numeric message ids plus a per-country cost breakdown, which is the vendor's own price for this exact batch
The quote, the balance, and the prior period comparison go to the campaign owner, with the point of no return stated as a time
The owner lets it fire, or calls Cancel Scheduled SMS, which is the only exit and only works on the numeric ids the scheduled path returns

What This Integration Enables

GatewayAPI is a Danish gateway operated by ONLINECITY.IO, delivering worldwide from an EU platform, and the property that makes it unusually well suited to agent-driven sending is that it will tell you what a batch costs before the batch happens. Schedule SMS Message queues one body for up to ten thousand recipients at a future time and returns, alongside the message ids, a per-country cost breakdown for that specific run. That is not an estimate the flow computed from a price list. It is the platform's own arithmetic on the actual recipient set, handed back while the messages are still cancelable.

There is a structural catch worth understanding before designing anything on this connector, because it decides which path a flow should take. GatewayAPI has two API generations. The current Messaging API handles Send SMS Message and Send Bulk SMS Messages and returns string message ids. The legacy REST endpoints, which remain the only documented way to schedule, cancel, or retrieve a message, return numeric ids. Only the numeric ids are accepted by Get SMS Message and Cancel Scheduled SMS. The consequence is direct: a message sent through the immediate path cannot afterward be looked up or recalled, while a message put through the scheduled path can be both. An agent that sends immediately has traded away its own ability to answer the two questions somebody will eventually ask, which are what did that cost and can we stop it.

The rest of the surface supports that same posture. Get Usage By Label reports traffic for a date range broken down by label, destination country, and message class, with counts and cost, which makes label a real cost-attribution dimension rather than a tag. Get SMS Prices returns the general price list grouped by message class with per-country prices in DKK and EUR, so a flow can model a new market before entering it. Look Up Phone Numbers runs an HLR lookup returning current carrier, original operator, ported flag, and subscriber type. The keyword operations manage two-way messaging on short codes. Two constraints belong in any design: Get SMS Message only returns data for seven days after sending, and GatewayAPI caps concurrent connections at roughly forty per IP address, so a large send should go through Send Bulk SMS Messages rather than being fanned out into parallel calls. HLR lookup and the keyword operations are both enabled per account, the first currently for Danish numbers only and the second under a separate reseller agreement, and both are charged against account credit. There are no triggers, because delivery and inbound payloads arrive at a webhook URL set by hand in the dashboard and signed as a JWT, with nothing a flow could subscribe against.

Without FlowRunner

Cost known after delivery The price of a batch is an invoice line next month, broken down by nothing anyone can act on
Sends that cannot be inspected A message goes out and there is no identifier the platform will accept back when you ask what happened to it
Platform region inherited Traffic lands on whichever GatewayAPI platform the first API token happened to belong to

With FlowRunner

Cost quoted before delivery Scheduling returns a per-country breakdown for this exact batch before a single message leaves the queue
Sends that stay inspectable The scheduled path returns the identifiers that both the status read and the cancel accept
Platform region chosen deliberately Global and EU are separate platforms with separate tokens, selected as configuration rather than by accident

Use Case Scenarios

A batch that quotes itself before it sends

An operations team runs a weekly customer notification across several Nordic and DACH markets. The agent assembles the recipient set from PostgreSQL, attaches a label naming the campaign and the week, and reads Get Account Balance for the current credit position. Then it calls Schedule SMS Message rather than sending, queueing the run for thirty minutes out. What comes back is the point of the whole design: numeric message ids and a real per-country cost breakdown for this exact recipient list. The agent sets that against what Get Usage By Label says the same campaign cost last week, and posts both numbers with the difference called out. Nothing is committed. The messages sit in the queue, cancelable by id, until either a person cancels them or the clock runs out.

Cost attribution that survives the finance conversation

Labels are how GatewayAPI answers the question of where the SMS spend went. The agent sets a label on every send it makes, naming the campaign, the market, and the owning team. At month end it walks Get Usage By Label over the period and produces a breakdown by label, destination country, and message class, then writes it into Google Sheets next to the same period from the year before. When a new market is on the table, Get SMS Prices supplies the per-country rate in DKK and EUR before anyone commits to a launch, so the forecast is built on the account's actual price list rather than on a rounded number from a vendor page.

Claiming a keyword on a shared short code

Two-way campaigns need a keyword, and keywords live on short codes that other tenants also use. The agent runs Check Keyword Availability for the word the campaign wants and List Keywords to show what the account already holds. If the word is free, the agent does not take it. Add Keyword registers the keyword against the short code, is charged against account credit, and requires the account to hold a reseller agreement, and Cancel Keyword only takes effect at the end of the current period rather than immediately. So the flow assembles the case, meaning the keyword, the short code, the cost, and the fact that unwinding it is a period-long commitment, and posts it into Slack for the person who owns the short code relationship. A keyword taken by mistake is not just an expense, it is a public identifier removed from everyone else on that code until the period closes.

Human-in-Loop Highlight

The gate on GatewayAPI is the quote, and it works because the vendor built the pause into the platform rather than because FlowRunner bolted one on. The immediate path, Send SMS Message and Send Bulk SMS Messages, returns string ids that Cancel Scheduled SMS will not accept and Get SMS Message will not resolve. The scheduled path returns numeric ids that both accept, plus a per-country cost breakdown for the batch as submitted. That means the design rule for an agent on a production GatewayAPI connection writes itself: the agent's way of proposing a large send is Schedule SMS Message, and the human either does nothing and lets it fire, or calls Cancel Scheduled SMS. The immediate verbs are for single transactional messages where there is nothing to deliberate about.

What the agent posts is therefore a priced proposal with a deadline on it rather than a request for permission. Into Slack: "Weekly notification scheduled for 09:30, 22,140 recipients across 5 countries. GatewayAPI quotes 1,842.60 DKK: DK 9,880 at 0.043, SE 6,220 at 0.055, NO 3,110 at 0.061, DE 2,180 at 0.079, FI 750 at 0.058. Same label cost 1,610.20 last week, so this run is up 14 percent, mostly DE volume. Balance after send would be 6,204.80. Cancel by 09:25, otherwise it goes." A person reads that, recognizes the German number as the new market they approved, and does nothing. Or recognizes it as a de-duplication bug and cancels.

That is human-in-the-loop as Orchestration as a Service intends it, and the useful detail is what the agent did not ask. It did not ask whether the copy was good, because nobody needs an agent to hold that up. It asked about a spend it had already priced exactly, against a comparison it had already run, with a stated moment after which the decision belongs to nobody. Two other operations belong behind a person for their own reasons. Add Keyword takes a public identifier on a short code shared with other tenants and cannot be unwound before the end of the current period. Look Up Phone Numbers is billed per lookup against the same account credit, so an agent sweeping a large unclean list is paying to discover the list is unclean, and that is a spend somebody should have chosen.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via Slack
Human decides
Agent resumes with decision

Agent Capabilities

13 actions

Messaging

2
  • Send SMS Message Submits one message to one recipient through the current Messaging API, with optional reference, expiration, priority, and label. It returns a string message id, which means the message cannot afterward be retrieved or canceled, so this is the right action for transactional sends and the wrong one for anything a person might want to stop.
  • Send Bulk SMS Messages Submits up to a thousand messages in one call, each entry carrying its own sender, recipient, and body, so a batch can mix senders and destination countries. Priority and expiration apply to the whole batch. Batching here rather than fanning out parallel calls also stays inside GatewayAPI's concurrent connection cap.

Scheduled Messages

3
  • Schedule SMS Message Queues one body for up to ten thousand recipients at a future time, with message class, priority, encoding, flash or inbox destination, validity period, callback URL, and label. It returns numeric message ids and a per-country cost breakdown, which makes it the only send path that is both priced in advance and cancelable afterward.
  • Get SMS Message Retrieves a submitted message by its numeric id with per-recipient delivery state, timestamps, network codes, and error codes. Data is available for seven days after sending, so reconciliation needs to happen inside that window rather than at quarter end.
  • Cancel Scheduled SMS Removes a scheduled message from the send queue before delivery. This is the exit from a proposed batch, and it only works on the numeric ids the scheduled path returns.

Account and Cost

3
  • Get Account Balance Returns remaining prepaid credit, billing currency, and account id. The check that runs before a batch is proposed, so the quote can be set against what is actually available.
  • Get SMS Prices Returns the general SMS price list in JSON, grouped by message class, with per-country prices in DKK and EUR. Used to model the cost of a market before entering it rather than after.
  • Get Usage By Label Returns traffic for a date range broken down by label, destination country, and message class, with message counts and cost. This is what turns label from a tag into a cost-attribution dimension a finance conversation can survive.

Number Lookup

1
  • Look Up Phone Numbers Runs an HLR lookup on a list of numbers, returning current carrier, original network operator, ported flag, and subscriber type. Billed per lookup and enabled per account, currently for Danish numbers only, so a sweep across a large list is a deliberate spend.

Keywords

4
  • List Keywords Returns the two-way messaging keywords registered on the account. The inventory a flow checks before proposing to claim another one.
  • Check Keyword Availability Reports whether a keyword is free on a given short code. Availability is not permission to take it, since the short code is shared and the registration commits the account for a period.
  • Add Keyword Registers a keyword on a short code, optionally binding it to a webhook. Charged against account credit, gated behind a separate reseller agreement, and not reversible before the end of the current period.
  • Cancel Keyword Cancels a keyword subscription at the end of the current period. The delay is the reason claiming one is a decision rather than a step.

Frequently Asked Questions

What can FlowRunner do with GatewayAPI?

FlowRunner agents can run Send SMS Message, Send Bulk SMS Messages, and Schedule SMS Message in GatewayAPI, plus 10 more actions.

Does connecting GatewayAPI to FlowRunner require OAuth?

No. GatewayAPI connects to FlowRunner with an API key, no OAuth flow required.

Can GatewayAPI trigger a FlowRunner workflow automatically?

GatewayAPI doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with GatewayAPI

$100 in credits. No card required. Connect in minutes.