Raw schema
{
"type": "object",
"properties": {
"to": {
"anyOf": [
{
"type": "string",
"description": "Phone number in E.164. Example: +48533991881. A 9-digit number without prefix is treated as Polish."
},
{
"type": "string",
"pattern": "^group:.+",
"description": "Grupa kontaktów: \"group:<id lub nazwa>\", np. \"group:VIP\". Członkowie dostają personalizację {{imie}}, {{nazwisko}} i pól własnych."
},
{
"minItems": 1,
"maxItems": 500,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"description": "Phone number in E.164. Example: +48533991881. A 9-digit number without prefix is treated as Polish."
},
{
"type": "string",
"pattern": "^group:.+",
"description": "Grupa kontaktów: \"group:<id lub nazwa>\", np. \"group:VIP\". Członkowie dostają personalizację {{imie}}, {{nazwisko}} i pól własnych."
}
]
}
}
],
"description": "Jeden numer, lista numerów (maks. 500) albo grupa kontaktów \"group:Nazwa\"."
},
"text": {
"description": "Treść wiadomości (do 1000 znaków, dzielona na części); pomiń, gdy podajesz template_id. Placeholdery: {{imie}}, {{nazwisko}}, pola własne kontaktu, {{opt_out}} = osobisty link wypisu (wymagany w SMS-ach marketingowych), {{link:https://…}} = śledzony krótki link z licznikiem kliknięć (maks. 2).",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"from": {
"description": "Nazwa nadawcy (nadpis). Pomiń, by użyć domyślnego nadpisu konta. Dostępne nazwy: list_senders.",
"type": "string",
"maxLength": 11
},
"send_at": {
"description": "Zaplanowana wysyłka, data ISO 8601 (np. 2026-09-08T09:00:00+02:00). Maks. 90 dni w przód. Pomiń, by wysłać teraz.",
"type": "string"
},
"send_window": {
"description": "Okno godzin wysyłki w czasie polskim, np. \"08:00-20:00\". Poza oknem wysyłka jest przesuwana na najbliższy początek okna. Pomiń, by użyć ustawienia konta.",
"type": "string",
"pattern": "^\\d{1,2}:\\d{2}-\\d{1,2}:\\d{2}$"
},
"expires_at": {
"description": "ISO 8601: po tym czasie dostawca przestaje próbować doręczyć (15 min – 72 h po wysyłce). Np. termin wizyty, po którym przypomnienie nie ma sensu.",
"type": "string"
},
"reference": {
"description": "Własny identyfikator (np. numer zamówienia) do odszukania wiadomości później.",
"type": "string",
"maxLength": 128
},
"idempotency_key": {
"description": "Unikalny identyfikator zatwierdzonej wysyłki. Przy ponowieniu zachowaj tę samą wartość; nie zmieniaj po timeoutcie.",
"type": "string",
"minLength": 1,
"maxLength": 128
},
"template_id": {
"description": "Id szablonu (tpl_…) z list_templates zamiast text; {{klucz}} w szablonie podstawiane z params.",
"type": "string"
},
"params": {
"description": "Wartości do szablonu, np. {\"imie\":\"Anno\",\"kiedy\":\"jutro 10:00\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"priority": {
"description": "SMS priorytetowy (osobna kolejka dla kodów i alertów, podwójna cena).",
"type": "boolean"
}
},
"required": [
"to"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}