# Overview

The Transactional API is Instasent's SMS wholesale surface: single send, bulk send, delivery reports, inbound, HLR lookup, balance and pricing, over HTTP (REST) or SMPP. It is the evolution of the Legacy API — every new SMS integration should land here.

The Transactional API — also known internally as the **SMS API** — is Instasent's core SMS surface. It connects your application directly to carrier networks, delivering to handsets in 200+ countries, and covers everything you need around raw SMS: sending (single or batched), receiving DLRs and inbound, querying message history, running HLR lookups and reading price profiles and account balance.

It is the **evolution of the [Legacy API](/legacy-api/overview)** — same endpoint surface, modernised with DLR webhooks, per-project tokens, SMPP and the `api_sms` token model. If you are about to write new code, write it against this API.

Two transports expose the same underlying pipeline. Pick the one that fits your stack — most teams start with HTTP and only move to SMPP when volume or session-state requirements justify it.

- [HTTP (REST)](/transactional-api/http/quickstart) - JSON over HTTPS. Best for application servers, serverless functions and anything that already speaks REST. Webhook-based DLRs.
- [SMPP](/transactional-api/smpp/integration) - Persistent TCP sessions, binary protocol. Best for high-throughput platforms (messaging providers, aggregators) that already operate an SMPP stack.

## What you can do

- **Send SMS, one at a time** — `POST /sms` for triggered traffic (OTPs, alerts, receipts, notifications).
- **Send SMS in bulk** — `POST /sms/bulk` takes a collection of messages in a single request. This is the endpoint for API-driven campaigns, marketing fan-outs and any high-volume dispatch. Customers including marketing agencies run entire campaigns on top of it.
- **Receive delivery reports** (DLRs) as carriers report status back through the chain, pushed to your webhook in real time.
- **Accept inbound messages** when the account has two-way enabled.
- **Query message history** and per-message status — `GET /sms`, `GET /sms/{id}`.
- **Run HLR / number lookups** — `POST /lookup`, `GET /lookup/{id}` and `GET /lookup` to check handset presence and routing before sending.
- **Read account balance** — `GET /organization/account`.
- **Read price profiles** — `GET /sms/price-profile/me/countries` and `GET /lookup/price-profile/me/countries` for per-country pricing.

## When to use this API

Reach for Transactional whenever you need raw SMS capacity — single, batched, or wholesale — without asking Instasent to manage the recipient audience. Typical workloads:

- **User-triggered messages** — OTPs, password resets, receipts, shipping notifications. One message per event, delivered in seconds, via `POST /sms`.
- **API-driven campaigns and bulk dispatch** — marketing sends, notification fan-outs, anything that fires many messages in one go. Use `POST /sms/bulk`.
- **SMS wholesale** — aggregators, messaging platforms and resellers pushing their own traffic through Instasent. Use HTTP at moderate rates; use [SMPP](/transactional-api/smpp/integration) for carrier-grade throughput with persistent sessions.
- **Pre-send validation and pricing** — HLR lookup and price profiles to route and cost-check before dispatch.

If you need Instasent to own the audience, personalization, segmentation and attribution, use the [Product API](/product-api/guide) instead — it delegates delivery to this one but adds the customer-data layer on top. The Transactional API is the right pick when the caller already manages its recipient list and just needs the full SMS pipe.

## What to read next

- [HTTP Quickstart](/transactional-api/http/quickstart) - Send your first SMS over REST in under five minutes.
- [Bulk sending](/transactional-api/http/bulk) - Up to 100 messages per request, queue-based dispatch, the endpoint for API-driven campaigns.
- [HTTP Authentication](/transactional-api/http/authentication) - Token types, header vs. query string, rotation.
- [Receiving DLRs](/transactional-api/http/dlrs) - Webhook payload, status list, two-way inbound.
- [API Reference](/transactional-api/http/reference) - Every endpoint, every parameter.
