SMS Bridge - API v2

Dokumentacja endpointów v2. Autoryzacja: Authorization: Bearer YOUR_API_KEY

Strona główna Dokumentacja v1

Autoryzacja

Wymagane nagłówki
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Format odpowiedzi

v2 ma ujednolicony format
{
  "success": true,
  "data": { }
}

{
  "success": false,
  "error": {
    "code": "...",
    "message": "...",
    "details": { }
  }
}

Endpointy

Lista endpointów v2
GET /v2/auth.php
Test autoryzacji
Sprawdza poprawność API KEY.
POST /v2/messages/send.php
Wysłanie SMS
Dodaje SMS do kolejki (status queued).
GET /v2/messages/pending.php?limit=50
Kolejka dla bramki
Lease-based claim (wymaga sms_messages.lease_until + attempts).
POST /v2/messages/status.php
Status z bramki
Mapuje sms_sent/failed/claimed na statusy v2.
GET /v2/messages/get.php?id=123
Pobierz po ID
Zwraca wiadomość po id.
GET /v2/messages/get.php?external_id=ABC-123
Pobierz po external_id
Zwraca wiadomość po external_id.
GET /v2/sender-id.php
Pobierz Sender ID
Zwraca domyślny Sender ID klienta (clients.default_sender_id).
POST /v2/sender-id/update.php
Ustaw Sender ID
Ustawia / aktualizuje domyślny Sender ID klienta.
POST /v2/api-keys/mark-scanned.php
Mark scanned
Oznacza klucz API jako zeskanowany/aktywny dla bramki.
POST /v2/api-keys/check-scanned.php
Check scanned
Sprawdza czy API key był już skanowany (zwraca sendit, scan info).
GET /v2/subscription/status.php
Status subskrypcji
Zwraca limity/okres rozliczeniowy (na podstawie transactions / fallback).

Przykład: wysłanie SMS

POST /v2/messages/send.php
{
  "to": "+48123456789",
  "text": "Wiadomość testowa",
  "sender": "Moja Firma",
  "sender_phone": "",
  "external_id": "EXT-2025-001",
  "message_prefix": ""
}

Przykłady (zakładki)

Wklej swój API_KEY w nagłówku Authorization
<?php
$url = '/v2/messages/send.php';
$payload = [
  'to' => '+48123456789',
  'text' => 'Wiadomość testowa',
  'sender' => 'MojaFirma',
  'external_id' => 'EXT-2025-001',
  'message_prefix' => ''
];
$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'Authorization: Bearer YOUR_API_KEY'
  ],
  CURLOPT_POSTFIELDS => json_encode($payload)
]);
$res = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP $code\n";
echo $res;
curl -X POST '/v2/messages/send.php' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"to":"+48123456789","text":"Wiadomość testowa","sender":"MojaFirma","external_id":"EXT-2025-001","message_prefix":""}'
{
  "to": "+48123456789",
  "text": "Wiadomość testowa",
  "sender": "MojaFirma",
  "external_id": "EXT-2025-001",
  "message_prefix": ""
}
import requests

url = '/v2/messages/send.php'
headers = {
  'Authorization': 'Bearer YOUR_API_KEY',
  'Content-Type': 'application/json'
}
payload = {
  'to': '+48123456789',
  'text': 'Wiadomość testowa',
  'sender': 'MojaFirma',
  'external_id': 'EXT-2025-001',
  'message_prefix': ''
}
r = requests.post(url, headers=headers, json=payload, timeout=30)
print(r.status_code)
print(r.text)
// Kotlin + OkHttp
val url = "/v2/messages/send.php"
val json = """{
  \"to\": \"+48123456789\",
  \"text\": \"Wiadomość testowa\",
  \"sender\": \"MojaFirma\",
  \"external_id\": \"EXT-2025-001\",
  \"message_prefix\": \"\"
}"""

val client = okhttp3.OkHttpClient()
val body = okhttp3.RequestBody.create(
  "application/json; charset=utf-8".toMediaType(),
  json
)
val request = okhttp3.Request.Builder()
  .url(url)
  .addHeader("Authorization", "Bearer YOUR_API_KEY")
  .post(body)
  .build()

client.newCall(request).enqueue(object : okhttp3.Callback {
  override fun onFailure(call: okhttp3.Call, e: java.io.IOException) {
    e.printStackTrace()
  }
  override fun onResponse(call: okhttp3.Call, response: okhttp3.Response) {
    println(response.code)
    println(response.body?.string())
  }
})

Przykład: pobranie kolejki (bramka)

GET /v2/messages/pending.php?limit=50
{
  "success": true,
  "data": {
    "count": 1,
    "messages": [
      {
        "id": 1,
        "target_phone": "+48123456789",
        "message_text": "Wiadomość",
        "external_id": "EXT-2025-001",
        "status": "queued"
      }
    ]
  }
}

Przykład: status z bramki

POST /v2/messages/status.php
{
  "message_id": 12345,
  "status": "sms_sent",
  "sender_id": "Sendit-ABCDEF12",
  "details": {
    "device": "android",
    "error": null
  }
}
Uwaga: jeśli bramka na telefonie nie pobiera wiadomości z /api/v2/messages/pending.php, sprawdź czy w tabeli sms_messages istnieją kolumny: lease_until, attempts, last_error.