> ## Documentation Index
> Fetch the complete documentation index at: https://smsmanager.cz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Odeslání více zpráv

> Tento endpoint použijte pro odeslání dávky zpráv více příjemcům (můžete nastavit až 10 příjemců na požadavek a až 10 požadavků v jednom API volání). To znamená, že jedním HTTP API voláním můžete oslovit až 100 příjemců. Pokud chcete použít jiné kanály než SMS (Viber, WhatsApp atd.), použijte vlastnost `flow`. Při použití tohoto endpointu obdržíte `message_id` pro každý požadavek (ne pro každého příjemce). Pro získání message_id každého příjemce připojte k `message_id` příponu `-<index_příjemce>`. Více informací o message_id najdete v [dokumentaci](#sending/paths/~1messages/post/response&c=200).




## OpenAPI

````yaml /openapi/json/jsonapi_v2.yaml post /messages
openapi: 3.1.0
info:
  title: JSON API
  description: >
    API pro odesílání zpráv přes SMS, Viber, WhatsApp, RCS a další komunikační
    kanály.


    ## JSON API v2


    API klíč je vyžadován pro všechny požadavky. Svůj API klíč najdete v
    [nastavení účtu](https://app.smsmanager.com/api-cloud).


    Starší verze API (http-api a xml-api) jsou zastaralé a místo nich byste měli
    používat toto JSON API v2.
  version: v2
  contact:
    url: https://smsmanager.cz
    email: cc@smsmanager.cz
servers:
  - url: https://api.smsmngr.com/v2
    description: Odpoví s daty vašeho požadavku
security: []
tags:
  - name: sending
    x-displayName: Odesílání
    description: >
      Pro odesílání zpráv použijte jeden z následujících endpointů.

      - `/message` pro odeslání zprávy až 10 příjemcům

      - `/message/priority` pro odeslání prioritní zprávy (zpracována prioritní
      frontou)

      - `/messages` pro odeslání více zpráv (až 10 zpráv najednou)

      - `/simple/message` pro odeslání jednoduché zprávy (GET a POST)
paths:
  /messages:
    post:
      tags:
        - sending
      summary: Odeslání více zpráv
      description: >
        Tento endpoint použijte pro odeslání dávky zpráv více příjemcům (můžete
        nastavit až 10 příjemců na požadavek a až 10 požadavků v jednom API
        volání). To znamená, že jedním HTTP API voláním můžete oslovit až 100
        příjemců. Pokud chcete použít jiné kanály než SMS (Viber, WhatsApp
        atd.), použijte vlastnost `flow`. Při použití tohoto endpointu obdržíte
        `message_id` pro každý požadavek (ne pro každého příjemce). Pro získání
        message_id každého příjemce připojte k `message_id` příponu
        `-<index_příjemce>`. Více informací o message_id najdete v
        [dokumentaci](#sending/paths/~1messages/post/response&c=200).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              minItems: 1
              maxItems: 10
              items:
                $ref: '#/components/schemas/Message'
            examples:
              Two requests with multiple recipients:
                value:
                  - body: Hello John
                    to:
                      - phone_number: '420777123456'
                      - phone_number: '420777654321'
                  - body: Hello Jane
                    to:
                      - phone_number: '420777115577'
                      - phone_number: '420777223344'
              Mixed channels:
                value:
                  - body: Promo SMS
                    to:
                      - phone_number: '420777111111'
                    flow:
                      - sms:
                          sender: PromoSMS
                          gateway: high
                  - body: Promo Viber
                    to:
                      - phone_number: '420777222222'
                    flow:
                      - viber:
                          sender: PromoViber
                          ttl: 2
              Scheduled batch:
                value:
                  - body: Scheduled greetings
                    to:
                      - phone_number: '420777333333'
                    datetime: '2025-01-11T10:00:00Z'
                  - body: Another scheduled
                    to:
                      - phone_number: '420777444444'
                    datetime: '2025-01-11T10:05:00Z'
              WhatsApp templates:
                value:
                  - to:
                      - phone_number: '420777555555'
                    flow:
                      - whatsapp_template:
                          template_name: order_update
                          sender: '447700900123'
                          language: en
                          params:
                            - John
                            - '12345'
                  - to:
                      - phone_number: '420777666666'
                    flow:
                      - whatsapp_template:
                          template_name: order_update
                          sender: '447700900123'
                          language: en
                          params:
                            - Jane
                            - '54321'
              Messages with payload and callback:
                value:
                  - body: Your package is on the way
                    to:
                      - phone_number: '420777777777'
                    callback: https://example.com/delivery
                    payload:
                      order_id: ORD-42
                  - body: We received your inquiry
                    to:
                      - phone_number: '420777888888'
                    payload:
                      ticket_id: TCK-99
      responses:
        '200':
          description: Zprávy byly úspěšně odeslány
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessagesResponse'
              examples:
                Accepted two requests with multiple recipients:
                  description: >-
                    Dva požadavky s více příjemci. Pozor, při použití endpointu
                    `/messages` obdržíte `message_id` pro každý požadavek (ne
                    pro každého příjemce). Pro získání message_id každého
                    příjemce připojte k `message_id` příponu
                    `-<index_příjemce>`. Například pokud máte dva příjemce v
                    prvním požadavku, první příjemce bude mít `message_id`
                    `pppppppp-qqqq-rrrr-ssss-tttttttttttt-0` a druhý příjemce
                    `pppppppp-qqqq-rrrr-ssss-tttttttttttt-1`.
                  value:
                    request_id: 66666666-6666-6666-6666-666666666666
                    accepted:
                      - key: '0'
                        message_id: pppppppp-qqqq-rrrr-ssss-tttttttttttt
                      - key: '1'
                        message_id: uuuuuuuu-vvvv-wwww-xxxx-yyyyyyyyyyyy
                    rejected: []
        '400':
          description: Špatný požadavek
          content:
            application/json:
              schema:
                type: object
                properties:
                  Message:
                    type: string
                    description: Chybová zpráva.
                    example: >-
                      User is not authorized to access this resource with an
                      explicit deny
      security:
        - x-api-key: []
components:
  schemas:
    Message:
      type: object
      required:
        - to
      properties:
        body:
          type: string
          maxLength: 1000
          description: >-
            Tělo zprávy (pokud není definováno ve flow). Tělo je povinné buď zde
            v kořenovém objektu, nebo v kroku flow. Delší texty jsou zkráceny na
            1000 znaků.
        to:
          type: array
          minItems: 1
          maxItems: 10
          description: Seznam příjemců.
          items:
            type: object
            properties:
              phone_number:
                type: string
                description: >-
                  Telefonní číslo příjemce. Doporučujeme mezinárodní formát
                  (E.164, bez úvodního `+` nebo `00`), ale akceptujeme i jiné
                  formáty (před přijetím požadavku číslo převedeme do
                  mezinárodního formátu).
                example: '420777123456'
            required:
              - phone_number
        sender:
          type: string
          description: >-
            Výchozí odesílatel pro všechny kroky flow. Pokud krok flow definuje
            vlastní `sender`, má hodnota z kroku flow vyšší prioritu.
            Alfanumerický název odesílatele (max. 11 znaků, může být vyžadována
            předchozí registrace) nebo dedikované virtuální číslo (bez `+`).
          examples:
            - Mojefirma
            - '420777123456'
        callback:
          oneOf:
            - type: string
              format: uri
            - type: object
          description: >-
            Callback URL pro příjem notifikací o doručení (Webhook, viz
            [Webhooks](#tag/Webhooks)). Můžete předat prostý řetězec s URL, nebo
            objekt s rozšířenou konfigurací callbacku.
        tag:
          type: string
          default: promotional
          description: >-
            Tag zprávy. Můžete jej použít pro seskupování zpráv (např. podle id
            kampaně). Více tagů lze předat oddělených čárkou. Tagy jsou
            normalizovány na malá písmena a jsou zachovány pouze znaky `a-z`,
            `0-9`, `-`, `.` a `_`. Existují také speciální tagy: `priority` (pro
            prioritní zprávy), `transactional` (pro transakční zprávy). Zprávy s
            výchozím tagem `promotional` jsou kontrolovány proti opt-out seznamu
            příjemců.
        messageTag:
          type: string
          deprecated: true
          description: Zastaralý alias pole `tag`. Použijte `tag`.
        params:
          type: object
          description: >-
            Tímto objektem můžete zprávě předat speciální parametry, např.
            automatické zkracování odkazů přes objekt `_url`. Zeptejte se nás,
            jak tento parametr použít pro další funkce.
          properties:
            _url:
              type: object
              description: >-
                Automatické zkracování odkazů. Odkazy nalezené v těle zprávy
                jsou nahrazeny krátkými přesměrovacími odkazy.
              properties:
                type:
                  type: string
                  enum:
                    - full
                    - all
                  default: full
                  description: >-
                    `full` zkracuje pouze úplné URL včetně protokolu (např.
                    `https://example.com/page`). `all` zkracuje všechny nalezené
                    domény a adresy.
                domain:
                  type: string
                  description: >-
                    Vlastní doména použitá pro zkrácené odkazy (musí být předem
                    nakonfigurována pro váš účet).
                get_enhance:
                  type: string
                  enum:
                    - id
                  description: >-
                    Pokud je nastaveno na `id`, ke zkrácenému odkazu se jako
                    query parametr připojí unikátní `message_id`, takže po
                    prokliku můžete identifikovat příjemce.
                get_name:
                  type: string
                  default: _
                  description: Název query parametru použitého pro `get_enhance`.
                expires_at:
                  type: integer
                  description: >-
                    Unix timestamp expirace zkráceného odkazu. Výchozí hodnota
                    je 7 dní od odeslání. (Zastaralý alias `expires` je stále
                    akceptován.)
                  example: 1736589600
        datetime:
          type: string
          format: date-time
          description: >-
            Naplánovaný čas odeslání zprávy. Vždy v UTC. Pokud je čas více než 1
            minutu v budoucnosti, zpráva je naplánována a zpracována v daný čas.
            Časy v minulosti jsou odeslány okamžitě.
          example: '2025-01-11T10:00:00Z'
        delivery_time:
          type: object
          description: >-
            Povolené doručovací okno. Pokud je aktuální (nebo naplánovaný) čas
            mimo okno, odeslání se posune na nejbližší platný čas.
          properties:
            days:
              type: array
              items:
                type: string
                enum:
                  - monday
                  - tuesday
                  - wednesday
                  - thursday
                  - friday
                  - saturday
                  - sunday
              description: Dny v týdnu, kdy je doručení povoleno.
            start:
              type: string
              description: Začátek doručovacího okna.
              example: '08:00'
            end:
              type: string
              description: Konec doručovacího okna.
              example: '21:00'
            tz:
              type: string
              description: Časová zóna doručovacího okna.
              example: Europe/Prague, Europe/London, Europe/Berlin, America/New_York
              default: UTC
        flow:
          type: array
          description: >
            Seznam komunikačních kanálů pro flow zprávy. Pokud je definován,
            nesmí být prázdný. Můžete použít více kanálů, na pořadí záleží
            (první kanál se použije jako první; pokud krok definuje `ttl` a jeho
            `ttl_condition` není v rámci TTL splněna, použije se další kanál,
            atd.). Pokud `flow` není definováno, použije se výchozí `[{"sms":
            {"gateway": "high"}}]`.
          items:
            type: object
            additionalProperties: false
            minProperties: 1
            maxProperties: 1
            properties:
              sms:
                type: object
                properties:
                  body:
                    type: string
                    maxLength: 1000
                    description: >-
                      Tato definice těla zprávy má vyšší prioritu než definice v
                      kořenovém objektu.
                  sender:
                    type: string
                    description: >-
                      Alfanumerický název odesílatele (max. 11 znaků, může být
                      vyžadována předchozí registrace) nebo dedikované virtuální
                      číslo (bez `+`). Pokud není nastaven, použije se `sender`
                      z kořenového objektu.
                    examples:
                      - Mojefirma
                      - 420777123456
                  gateway:
                    type: string
                    enum:
                      - high
                      - lowcost
                      - direct
                      - custom
                      - simhost
                      - gsm
                    default: high
                    description: >-
                      Použijte `high` pro výchozí vysoce kvalitní směrování,
                      `lowcost` pro nízkonákladové směrování. Použijte `direct`,
                      pokud používáte dedikované virtuální číslo. Použijte
                      `custom` nebo `simhost`, pokud používáte SIM hosting,
                      `gsm` pro vlastní GSM bránu.
                  ttl:
                    type: number
                    minimum: 0.5
                    description: >-
                      Doba platnosti v minutách. Pokud je definován další krok
                      flow a `ttl_condition` není v rámci TTL splněna, zpráva
                      pokračuje dalším krokem flow.
                  ttl_condition:
                    type: string
                    enum:
                      - sent
                      - delivered
                      - seen
                    default: sent
                    description: >-
                      Podmínka vyhodnocená po vypršení TTL. Pokud zpráva již
                      dosáhla tohoto stavu, další krok flow se nepoužije.
                  type:
                    type: string
                    enum:
                      - sms
                      - utf
                    default: utf
                    description: >-
                      Nastavte `utf`, pokud chcete ve zprávě zachovat unicode
                      znaky. Nastavte `sms`, pokud chcete unicode znaky převést
                      nebo odstranit a zachovat tak maximální kapacitu SMS.
                required:
                  - body
              viber:
                type: object
                properties:
                  body:
                    type: string
                    maxLength: 1000
                    description: >-
                      Tato definice těla zprávy má vyšší prioritu než definice v
                      kořenovém objektu.
                  sender:
                    type: string
                    description: >-
                      Použijte název odesílatele, který máte předem
                      zaregistrovaný pro Viber Business Message.
                  buttons:
                    type: array
                    maxItems: 1
                    items:
                      type: object
                      required:
                        - title
                        - url
                      properties:
                        title:
                          type: string
                        url:
                          type: string
                          format: uri
                  ttl:
                    type: number
                    minimum: 0.5
                    description: >-
                      Doba platnosti v minutách. Pokud je definován další krok
                      flow a `ttl_condition` není v rámci TTL splněna, zpráva
                      pokračuje dalším krokem flow.
                  ttl_condition:
                    type: string
                    enum:
                      - sent
                      - delivered
                      - seen
                    default: delivered
                    description: >-
                      Podmínka vyhodnocená po vypršení TTL. Pokud zpráva již
                      dosáhla tohoto stavu, další krok flow se nepoužije.
                required:
                  - body
                  - sender
              whatsapp_text:
                type: object
                properties:
                  body:
                    type: string
                    description: >-
                      Tato definice těla zprávy má vyšší prioritu než definice v
                      kořenovém objektu. Vlastní tělo zprávy můžete použít pouze
                      v případě, že příjemce již odpověděl na vaši šablonovou
                      zprávu nebo vám první napsal.
                    maxLength: 1000
                  sender:
                    type: string
                    description: >-
                      Phone Number ID registrovaného WhatsApp čísla. Najdete jej
                      ve svém [nastavení
                      WhatsApp](https://app.smsmanager.com/whatsapp).
                    examples:
                      - '514578330250514'
                required:
                  - body
                  - sender
              whatsapp_template:
                type: object
                properties:
                  template_name:
                    type: string
                    description: >-
                      Název šablony, kterou máte předem zaregistrovanou a
                      schválenou.
                    maxLength: 100
                  sender:
                    type: string
                    description: >-
                      Phone Number ID registrovaného WhatsApp čísla. Najdete jej
                      ve svém [nastavení
                      WhatsApp](https://app.smsmanager.com/whatsapp).
                    examples:
                      - '514578330250514'
                  params:
                    type: array
                    items:
                      type: string
                    description: >-
                      Pokud má vaše šablona parametry, zde předejte jejich
                      hodnoty.
                  params_header:
                    type: array
                    items:
                      type: string
                    description: >-
                      Pokud má vaše šablona hlavičku s parametrem, zde předejte
                      jeho hodnotu.
                  params_buttons:
                    type: array
                    items:
                      type: string
                    description: >-
                      Pokud mají tlačítka vaší šablony parametry, zde předejte
                      jejich hodnoty.
                  language:
                    type: string
                    examples:
                      - en
                      - cs
                    description: >-
                      Jazyk šablony (stejnou šablonu můžete mít ve více
                      jazycích).
                  ttl:
                    type: number
                    minimum: 0.5
                    description: >-
                      Doba platnosti v minutách. Pokud je definován další krok
                      flow a `ttl_condition` není v rámci TTL splněna, zpráva
                      pokračuje dalším krokem flow.
                  ttl_condition:
                    type: string
                    enum:
                      - sent
                      - delivered
                      - seen
                    default: delivered
                    description: >-
                      Podmínka vyhodnocená po vypršení TTL. Pokud zpráva již
                      dosáhla tohoto stavu, další krok flow se nepoužije.
                required:
                  - template_name
                  - language
                  - sender
              rcs:
                type: object
                properties:
                  body:
                    type: string
                    maxLength: 1000
                    description: >-
                      Tato definice těla zprávy má vyšší prioritu než definice v
                      kořenovém objektu.
                  sender:
                    type: string
                    description: >-
                      Použijte RCS agenta, kterého máte předem zaregistrovaného
                      pro váš účet.
                  ttl:
                    type: number
                    minimum: 0.5
                    description: >-
                      Doba platnosti v minutách. Pokud je definován další krok
                      flow a `ttl_condition` není v rámci TTL splněna, zpráva
                      pokračuje dalším krokem flow.
                  ttl_condition:
                    type: string
                    enum:
                      - sent
                      - delivered
                      - seen
                    default: delivered
                    description: >-
                      Podmínka vyhodnocená po vypršení TTL. Pokud zpráva již
                      dosáhla tohoto stavu, další krok flow se nepoužije.
                required:
                  - body
        payload:
          type: object
          description: >
            Můžete odeslat payload zprávy, kde si můžete definovat libovolné
            parametry zprávy. Tento objekt je vrácen v notifikaci o doručení a v
            odpovědích.
          example:
            user_id: '123456'
    MessagesResponse:
      type: object
      properties:
        request_id:
          type: string
          description: Unikátní identifikátor požadavku.
        accepted:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
                description: Index původního požadavku z pole v těle.
              message_id:
                type: string
                description: >-
                  Unikátní identifikátor zprávy pro každý požadavek z pole v
                  těle.
        rejected:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
                description: Index původního požadavku z pole v těle.
  securitySchemes:
    x-api-key:
      type: apiKey
      in: header
      name: x-api-key

````