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

# Criar um pedido

> Cria um pedido de carta, carta registrada, telegrama, mala direta, Sedex ou e-Carta. Os campos obrigatórios dependem do `shipType`. Documentos PDF podem ser enviados como base64, URL ou upload de arquivo (multipart).




## OpenAPI

````yaml /openapi/escrybe.pt.yaml post /api/v2/post
openapi: 3.1.0
info:
  title: API Escrybe
  version: 1.0.0
  description: >-
    REST API da plataforma Escrybe — envie cartas físicas, cartas registradas,

    telegramas e e-Carta pelos Correios, dispare e-mails registrados
    juridicamente

    e envie mensagens de WhatsApp com carimbo de tempo certificado.



    ## Autenticação


    Toda conta possui um **`securityToken`** pessoal (disponível no painel em

    *Minhas configurações → Acesso a API*). Três produtos o utilizam de formas

    diferentes:



    | Produto | Esquema | Como |

    |---------|---------|------|

    | Cartas / Telegrama / e-Carta, E-mail Registrado, Recibos | Token de API |
    Envie `userSecurityToken` como parâmetro (query/body) ou `securityToken`
    como header |

    | WhatsApp | HTTP Basic | `Authorization: Basic base64(email:securityToken)`
    |



    > As rotas de **consulta** de carta e e-mail (`get`, `balance`, `download`,

    > `delete`) recebem o token como o primeiro segmento de **caminho** da URL —

    > ex.: `/api/v2/get/{securityToken}/{job_id}`.



    ## Envelopes de resposta


    A maioria dos endpoints responde com o envelope padrão

    `{"status": <código http>, "status_message": "...", "data": ...}` — isso
    cobre

    Cartas/Telegrama, E-mail Registrado e os endpoints de mensagens e remetentes
    de

    WhatsApp. Os endpoints de **modelos** de WhatsApp (e a sincronização de
    modelos)

    usam `{"code": <código http>, "status": "success|error", "message": "...",

    "data": ..., "request_id": "..."}`; o endpoint de logo usa o mesmo formato
    sem

    `request_id`. Consulte o schema de cada endpoint.



    Uma requisição aceita retorna HTTP `200` com o payload de sucesso; problemas
    de

    validação retornam `400`, credenciais inválidas `401` e acesso negado `403`.

    Métodos HTTP não suportados retornam `405`, tentativas repetidas de

    autenticação falhas retornam `429` e os endpoints de carta e e-mail retornam

    `503` durante janelas de manutenção.
  contact:
    name: Suporte Escrybe
    url: https://escrybe.com.br
servers:
  - url: https://app.escrybe.com.br
    description: Produção
  - url: https://homolog.escrybe.com.br
    description: Homologação
security:
  - securityTokenQuery: []
tags:
  - name: Letters & Telegram
    description: Crie e gerencie pedidos de carta, telegrama e e-Carta (Correios).
  - name: Account & Favorites
    description: Saldo da conta, contatos salvos e logo do remetente.
  - name: Registered E-mail
    description: Envie e acompanhe e-mails registrados juridicamente.
  - name: WhatsApp Messages
    description: Envie mensagens de WhatsApp e baixe atestações com carimbo de tempo.
  - name: WhatsApp Senders
    description: Gerencie números do WhatsApp Business (remetentes).
  - name: WhatsApp Templates
    description: Crie, sincronize e gerencie modelos de mensagem do WhatsApp.
  - name: Receipts
    description: Baixe recibos legais de qualquer pedido.
paths:
  /api/v2/post:
    post:
      tags:
        - Letters & Telegram
      summary: Criar um pedido
      description: >
        Cria um pedido de carta, carta registrada, telegrama, mala direta, Sedex
        ou e-Carta. Os campos obrigatórios dependem do `shipType`. Documentos
        PDF podem ser enviados como base64, URL ou upload de arquivo
        (multipart).
      operationId: createOrder
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
      responses:
        '200':
          description: Pedido aceito (ou teste validado)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2Envelope'
              examples:
                accepted:
                  summary: Pedido aceito — data é o visual id numérico
                  value:
                    status: 200
                    status_message: Sucesso - pedido aceito
                    data: '2607031'
                test:
                  summary: test=1 — apenas validado; data traz o preço calculado
                  value:
                    status: 200
                    status_message: >-
                      Sucesso como teste. Os dados e arquivo enviados sao
                      validos e seu pedido seria aceito se nao fosse um teste.
                    data:
                      value: 12.34
        '400':
          $ref: '#/components/responses/V2BadRequest'
        '401':
          $ref: '#/components/responses/V2Unauthorized'
        '500':
          $ref: '#/components/responses/V2ServerError'
        '503':
          $ref: '#/components/responses/V2Maintenance'
      security: []
components:
  schemas:
    CreateOrderRequest:
      type: object
      required:
        - userSecurityToken
        - shipType
        - name
        - addr1
        - street_number
        - zip
        - city
        - state
        - country
      properties:
        userSecurityToken:
          type: string
          description: Seu token de segurança.
        shipType:
          type: integer
          enum:
            - 1
            - 2
            - 3
            - 4
            - 5
            - 6
            - 7
            - 8
            - 9
            - 10
          description: >
            1 Carta Simples · 2 Carta Registrada · 3 Carta Registrada + AR · 4
            Telegrama · 5 Mala Direta · 6 Sedex · 7 Sedex + AR · 8 eCarta
            Simples · 9 eCarta Registrada · 10 eCarta Registrada + AR. Sedex (6,
            7) só é aceito com `virtualbox=1` ou quando o endereço do remetente
            é em Jaú/SP.
        paymentMethod:
          type: string
          enum:
            - escrybe_credits
            - invoice
            - team
          default: escrybe_credits
        team_member_id:
          type: integer
          description: Obrigatório quando paymentMethod=team.
        ar_type:
          type: string
          enum:
            - physical
            - electronic
          default: physical
          description: '`electronic` só é permitido para shipTypes 3, 7 e 10.'
        virtualbox:
          type: string
          enum:
            - '0'
            - '1'
          default: '0'
          description: >
            Serviço Virtual Box — quando 1 (ou "true"), o endereço do remetente
            é substituído pela unidade da Escrybe (Jaú/SP) e a precificação do
            Virtual Box é aplicada.
        name:
          type: string
          maxLength: 60
          description: Nome do destinatário.
        addr1:
          type: string
          maxLength: 60
        street_number:
          type: string
          maxLength: 15
        addr2:
          type: string
          maxLength: 40
        zip:
          type: string
          description: >-
            CEP do destinatário. Validado nos Correios para endereços
            brasileiros; a UF é conferida contra o CEP.
        city:
          type: string
          maxLength: 40
        state:
          type: string
          maxLength: 40
          description: 'Para endereços brasileiros deve ser a UF de 2 letras (ex.: SP).'
        country:
          type: string
          maxLength: 60
        name_sender:
          type: string
          maxLength: 60
          description: Usa os dados do seu perfil quando omitido.
        addr1_sender:
          type: string
          maxLength: 60
        street_number_sender:
          type: string
          maxLength: 15
        addr2_sender:
          type: string
          maxLength: 40
        zip_sender:
          type: string
        city_sender:
          type: string
          maxLength: 40
        state_sender:
          type: string
          maxLength: 40
        country_sender:
          type: string
          maxLength: 60
        toAddrOnly:
          type: integer
          enum:
            - 0
            - 1
          default: 0
          description: >-
            Considerado apenas para shipTypes 2, 3, 6, 7 e 10; forçado para 0
            nos demais.
        tag:
          type: string
          description: Rótulo livre para sua própria referência.
        test:
          type: integer
          enum:
            - 0
            - 1
          default: 0
          description: Quando 1, valida sem criar o pedido e retorna o preço calculado.
        pdfFile:
          type: string
          description: >
            Obrigatório para shipTypes 1,2,3,5,6,7. String base64, URL (links
            públicos de Google Docs/Drive suportados) ou arquivo multipart. Máx.
            150 páginas; PDFs com senha são rejeitados.
        duplex_printing:
          type: integer
          enum:
            - 0
            - 1
          default: 1
          description: >-
            Também aceita "true"/"false". Forçado para 1 em PDFs de página única
            e para 0 quando envelope_type=autoenvelope.
        envelope_type:
          type: string
          enum:
            - regular
            - autoenvelope
          default: regular
          description: '`autoenvelope` exige um PDF de página única.'
        telegram_msg:
          type: string
          description: >-
            Obrigatório para shipType=4. Mín. 10 caracteres; conteúdo
            renderizado limitado a 10 páginas.
        telegram_post_dated:
          type: integer
          enum:
            - 0
            - 1
          description: Obrigatório (0 ou 1) quando shipType=4.
        telegram_post_dated_date:
          type: string
          format: date
          description: >-
            Obrigatório quando telegram_post_dated=1; deve ser uma data futura
            (amanhã ou depois).
        telegram_sender_copy:
          type: integer
          enum:
            - 0
            - 1
          description: Obrigatório (0 ou 1) quando shipType=4.
        telegram_delivery_confirmation:
          type: integer
          enum:
            - 0
            - 1
          description: Obrigatório (0 ou 1) quando shipType=4.
        ecarta_msg:
          type: string
          description: >-
            Obrigatório para shipTypes 8,9,10. Mín. 10 caracteres; pode conter
            HTML. Conteúdo renderizado limitado a 10 páginas.
        use_client_contract:
          type: string
          enum:
            - '0'
            - '1'
          default: '0'
          description: >
            Fatura o envio pelo seu próprio contrato dos Correios. Apenas para
            shipTypes 2,3,4,6,7,8,9,10; exige conta PJ com número/cartão de
            contrato dos Correios e um plano que permita.
    V2Envelope:
      type: object
      properties:
        status:
          type: integer
          example: 200
        status_message:
          type: string
        data:
          oneOf:
            - type: object
            - type: string
            - type: 'null'
  responses:
    V2BadRequest:
      description: Requisição inválida ou incompleta
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V2Envelope'
          example:
            status: 400
            status_message: Requisição incompleta
            data: null
    V2Unauthorized:
      description: Token inválido
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V2Envelope'
          example:
            status: 401
            status_message: Token inválido
            data: null
    V2ServerError:
      description: Erro interno
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V2Envelope'
    V2Maintenance:
      description: Servidor em manutenção
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V2Envelope'
  securitySchemes:
    securityTokenQuery:
      type: apiKey
      in: query
      name: userSecurityToken
      description: >-
        Seu token de segurança, enviado como parâmetro `userSecurityToken`
        (query ou form).

````