---
title: SMSAPI
description: Configure SMSAPI as an SMS provider in Notiflows
---

[SMSAPI](https://www.smsapi.pl/) is the leading Polish SMS provider. It runs two independent platforms — **SMSAPI.pl** for Poland and **SMSAPI.com** for international traffic — each with its own account and access token. Notiflows delivers with UTF-8 encoding so Polish characters render correctly.

## Prerequisites

Before configuring SMSAPI in Notiflows, you need:

1. An [SMSAPI account](https://www.smsapi.pl/) on the platform you plan to use (`.pl` for Poland or `.com` for international)
2. An OAuth2 **API access token** generated in your SMSAPI dashboard
3. A **sender name** that has been registered and verified in SMSAPI

## Configuration

| Field | Required | Description |
|-------|----------|-------------|
| Access token | Yes | Your SMSAPI OAuth2 API access token (used as a Bearer token). Stored encrypted. |
| Sender name | Yes | The verified sender name (`from`) shown to recipients. **Maximum 11 characters** and must be pre-registered in SMSAPI. |
| Service | Yes | The SMSAPI platform to send through: **SMSAPI.pl** (Poland, default) or **SMSAPI.com** (international). |

<Callout>
SMSAPI.pl and SMSAPI.com are separate platforms with separate accounts and tokens. Make sure the access token and sender name you enter belong to the same platform you select under **Service**.
</Callout>

## Step 1: Generate an API access token

1. Log in to your [SMSAPI dashboard](https://ssl.smsapi.pl/) (or the `.com` dashboard for international)
2. Open **Settings** > **API**
3. Create a new **OAuth2 access token** and grant it permission to send SMS
4. Copy the token — you'll paste it into Notiflows as the **Access token**

<Callout>
Treat the access token like a password. Never share it, commit it to version control, or expose it in client-side code.
</Callout>

## Step 2: Register a sender name

Polish operators require SMS to be sent from a **registered sender name** — you cannot send from an arbitrary string.

1. In the SMSAPI dashboard, open the **Sender names** section
2. Add the sender name you want recipients to see (for example, your brand name)
3. Submit it for verification and wait for approval
4. Note the exact approved value — it must be **11 characters or fewer**

You'll enter this value in Notiflows as the **Sender name**.

## Step 3: Set up in Notiflows

1. Navigate to **Channels** in your project
2. Click **Create Channel**
3. Select **SMS** as the channel type
4. Select **SMSAPI** as the provider
5. Enter your **Access token**
6. Enter your verified **Sender name** (max 11 characters)
7. Select the **Service** — **SMSAPI.pl** (Poland) or **SMSAPI.com** (international)
8. Save the channel

Under the hood Notiflows sends via SMSAPI's `POST /sms.do` HTTP API with UTF-8 encoding.

## Recipient phone numbers

Notiflows sends SMS to the `phone` stored on the recipient user. Numbers can be in international E.164 format or the local Polish format:

```
+48512345678   (E.164)
512345678      (local Polish)
```

Set the phone number on a user via the Admin API:

```bash
curl -X PUT https://api.notiflows.com/admin/v1/users/USER_ID \
  -H "x-notiflows-api-key: API_KEY" \
  -H "x-notiflows-secret-key: SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+48512345678"
  }'
```

## Templates

SMS templates use plaintext only. Because Notiflows sends with UTF-8 encoding, Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) are delivered as written.

Use Liquid templating for dynamic content:

```liquid
Cześć {{ recipient.first_name }}, Twoje zamówienie #{{ data.order_id }} zostało wysłane!
```

Available variable contexts:
- `recipient.*` - Recipient user data (first_name, last_name, phone, etc.)
- `actor.*` - User who triggered the notification
- `data.*` - Custom payload passed when triggering the notiflow
