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

# Quote a message without debit

> Requires `messages:send` on an organization service key. Project/environment/sender restrictions apply. See the matching guide for prerequisites and limits.

Requires `messages:send`. See [authentication](https://docs.sendlyy.app/guides/authentication.md) and the matching product guide before live use.


## OpenAPI

````yaml POST /api/v1/messages/quote
openapi: 3.1.0
info:
  title: Sendlyy Developer API
  version: v1
  description: >-
    WhatsApp messaging, shared Verify/Notify, contacts and delivery
    infrastructure. AI agents are a dashboard offering and are excluded. Live
    provider services require approval and enablement; see availability.
servers:
  - url: https://api.sendlyy.app
    description: >-
      Live API host; availability depends on deployed version and enabled
      services.
security:
  - bearerAuth: []
paths:
  /api/v1/messages/quote:
    post:
      tags:
        - Messages
      summary: Quote a message without debit
      description: >-
        Requires `messages:send` on an organization service key.
        Project/environment/sender restrictions apply. See the matching guide
        for prerequisites and limits.
      operationId: post-messages-quote
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendMessageInput'
          text/json:
            schema:
              $ref: '#/components/schemas/SendMessageInput'
          application/*+json:
            schema:
              $ref: '#/components/schemas/SendMessageInput'
        required: true
      responses:
        '200':
          description: Quote a message without debit
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Server-generated correlation identifier.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      currency:
                        type: string
                      category:
                        type: string
                      subtotal:
                        type: number
                      vatAmount:
                        type: number
                      total:
                        type: number
                required:
                  - message
                  - data
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '401':
          description: Invalid, expired or revoked credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '404':
          description: Resource missing or outside allowed scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '409':
          description: State, funds or idempotency conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '410':
          description: Media or historical typed content unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '413':
          description: Media exceeds the allowed size
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '422':
          description: Semantic validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '500':
          description: Unexpected server failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '502':
          description: Upstream provider failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
        '503':
          description: Service or provider not enabled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperError'
      security:
        - bearerAuth: []
components:
  schemas:
    SendMessageInput:
      required:
        - recipient
        - message
      type: object
      properties:
        recipient:
          type: string
        message:
          oneOf:
            - type: object
              properties:
                type:
                  const: text
                text:
                  type: object
                  properties:
                    body:
                      type: string
                      minLength: 1
                      maxLength: 4096
                  required:
                    - body
              required:
                - type
                - text
            - type: object
              properties:
                type:
                  const: audio
                audio:
                  type: object
                  properties:
                    mediaId:
                      type: string
                      format: uuid
                  required:
                    - mediaId
              required:
                - type
                - audio
            - type: object
              properties:
                type:
                  const: image
                image:
                  type: object
                  properties:
                    mediaId:
                      type: string
                      format: uuid
                    caption:
                      type: string
                      maxLength: 1024
                  required:
                    - mediaId
              required:
                - type
                - image
            - type: object
              properties:
                type:
                  const: video
                video:
                  type: object
                  properties:
                    mediaId:
                      type: string
                      format: uuid
                    caption:
                      type: string
                      maxLength: 1024
                  required:
                    - mediaId
              required:
                - type
                - video
            - type: object
              properties:
                type:
                  const: document
                document:
                  type: object
                  properties:
                    mediaId:
                      type: string
                      format: uuid
                    caption:
                      type: string
                      maxLength: 1024
                    filename:
                      type: string
                      maxLength: 255
                  required:
                    - mediaId
              required:
                - type
                - document
            - type: object
              properties:
                type:
                  const: sticker
                sticker:
                  type: object
                  properties:
                    mediaId:
                      type: string
                      format: uuid
                  required:
                    - mediaId
              required:
                - type
                - sticker
            - type: object
              properties:
                type:
                  const: location
                location:
                  type: object
                  properties:
                    latitude:
                      type: number
                      minimum: -90
                      maximum: 90
                    longitude:
                      type: number
                      minimum: -180
                      maximum: 180
                    name:
                      type: string
                    address:
                      type: string
                  required:
                    - latitude
                    - longitude
              required:
                - type
                - location
            - type: object
              properties:
                type:
                  const: contacts
                contacts:
                  type: array
                  minItems: 1
                  maxItems: 10
                  items:
                    type: object
                    properties:
                      name:
                        type: object
                        properties:
                          formattedName:
                            type: string
                          firstName:
                            type: string
                          lastName:
                            type: string
                        required:
                          - formattedName
                      phones:
                        type: array
                        items:
                          type: object
                          properties:
                            phone:
                              type: string
                            type:
                              type: string
                          required:
                            - phone
                    required:
                      - name
                      - phones
              required:
                - type
                - contacts
            - type: object
              properties:
                type:
                  const: reaction
                reaction:
                  type: object
                  properties:
                    messageId:
                      type: string
                      format: uuid
                    emoji:
                      type: string
                      maxLength: 20
                  required:
                    - messageId
              required:
                - type
                - reaction
            - type: object
              properties:
                type:
                  const: interactive
                interactive:
                  type: object
                  properties:
                    type:
                      enum:
                        - button
                        - list
                    body:
                      type: string
                    header:
                      type: string
                    footer:
                      type: string
                    buttons:
                      type: array
                      maxItems: 3
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          title:
                            type: string
                        required:
                          - id
                          - title
                    button:
                      type: string
                    sections:
                      type: array
                      maxItems: 10
                      items:
                        type: object
                        properties:
                          title:
                            type: string
                          rows:
                            type: array
                            maxItems: 10
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                title:
                                  type: string
                                description:
                                  type: string
                              required:
                                - id
                                - title
                  required:
                    - type
                    - body
              required:
                - type
                - interactive
            - type: object
              properties:
                type:
                  const: template
                templateId:
                  type: string
                  format: uuid
                variables:
                  type: array
                  maxItems: 20
                  items:
                    type: string
                    maxLength: 1000
                header:
                  type: object
                  properties:
                    type:
                      enum:
                        - image
                        - video
                        - document
                    mediaId:
                      type: string
                      format: uuid
                    variables:
                      type: array
                      maxItems: 20
                      items:
                        type: string
                        maxLength: 1000
                buttons:
                  type: array
                  items:
                    type: object
                    properties:
                      index:
                        type: integer
                        minimum: 0
                      type:
                        enum:
                          - url
                          - quick_reply
                      value:
                        type: string
                    required:
                      - index
                      - type
                      - value
                cards:
                  type: array
                  minItems: 2
                  maxItems: 10
                  items:
                    type: object
                    properties:
                      index:
                        type: integer
                        minimum: 0
                        maximum: 9
                      header:
                        type: object
                        properties:
                          type:
                            enum:
                              - image
                              - video
                              - document
                          mediaId:
                            type: string
                            format: uuid
                          variables:
                            type: array
                            maxItems: 20
                            items:
                              type: string
                              maxLength: 1000
                      variables:
                        type: array
                        maxItems: 20
                        items:
                          type: string
                          maxLength: 1000
                      buttons:
                        type: array
                        items:
                          type: object
                          properties:
                            index:
                              type: integer
                              minimum: 0
                            type:
                              enum:
                                - url
                                - quick_reply
                            value:
                              type: string
                          required:
                            - index
                            - type
                            - value
                    required:
                      - index
              required:
                - type
                - templateId
          discriminator:
            propertyName: type
        projectId:
          type:
            - 'null'
            - string
          format: uuid
        environmentId:
          type:
            - 'null'
            - string
          format: uuid
        senderId:
          type:
            - 'null'
            - string
          format: uuid
        conversationId:
          type:
            - 'null'
            - string
          format: uuid
        maximumAmount:
          pattern: ^-?(?:0|[1-9]\d*)(?:\.\d+)?$
          type:
            - 'null'
            - number
            - string
          format: double
    DeveloperError:
      type: object
      properties:
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      required:
        - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Sendlyy organization service key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.