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

# Send SMS (France)

> Send an SMS message to a French phone number using a verified Sender ID. The Sender ID must be verified by the Allo team before use. Contact support to register your Sender ID.

<Info>
  To send SMS in France, you need a verified Sender ID. Configure your Sender ID from [Settings > Compliance](https://web.withallo.com/settings/compliance).
</Info>

<Accordion title="Why a verified Sender ID is needed">
  **French operators block SMS sent from standard mobile numbers** (`+33 6xx` / `+33 7xx`) via API. You must use an Alphanumeric Sender ID or a Short Code to send business SMS in France.

  ## Why standard mobile numbers don't work

  French operators (Orange, SFR, Bouygues Telecom, Free Mobile) prohibit using mobile numbers for business SMS. ARCEP — France's telecom regulator — formalized this ban in January 2023.

  If you try to send SMS from a `+33 6` or `+33 7` number via API, operators block the message at the network level. Numbers that exceed volume thresholds are automatically suspended.

  Allo offers two compliant alternatives: **Alphanumeric Sender ID** and **Short Code**.

  ***

  ## Your options

  ### Alphanumeric Sender ID

  Your SMS displays a custom text name (up to 11 characters) instead of a phone number. For example, your recipients see "MOBILEFIRST" instead of `+33 6 12 34 56 78`.

  **Best for:**
  Appointment reminders, order confirmations, payment notifications, and one-way marketing campaigns.

  **Formatting rules:**

  * 3 to 11 characters
  * Letters (A-Z, a-z) and digits (0-9) only
  * Must contain at least one letter
  * No spaces or special characters

  **Key limitation:**
  Recipients cannot reply.

  **Setup time:** 1 to 5 business days.

  ### Short Code (5-digit number)

  A dedicated or shared 5-digit number (e.g., `36xxx` for marketing, `38xxx` for transactional messages).

  **Best for:**
  Two-way conversations, customer service, keyword campaigns, and high-volume marketing with native STOP handling.

  **Key advantage:**
  Recipients can reply.

  **Setup time:** 2 to 4 months for a dedicated code. Days to weeks for a shared code.

  <Tip>
    Most small businesses start with Alphanumeric Sender ID. Add a Short Code later if you need two-way messaging.
  </Tip>

  ***

  ## French SMS compliance rules

  **Consent:**

  * **B2C:** Explicit opt-in required.
  * **B2B:** No prior opt-in required, but the message must relate to the recipient's professional activity.

  **Time restrictions (marketing SMS only):**

  * No marketing SMS on Sundays or French public holidays
  * No marketing SMS between 20:00 and 08:00

  **STOP mechanism:**
  Every marketing SMS must include opt-out instructions.
</Accordion>


## OpenAPI

````yaml POST /v1/api/sms#france
openapi: 3.0.3
info:
  title: Allo API
  description: >-
    Allo API provides programmatic access to your Allo account, allowing you to
    manage webhooks, retrieve calls and contacts, and send SMS messages.


    All requests to `/v1/api/**` endpoints automatically go through quota
    checking and scope validation.
  version: 1.0.0
  contact:
    name: Allo Support
servers:
  - url: https://api.withallo.com
    description: Production server
security: []
tags:
  - name: Summary Templates
    description: >-
      Manage call summary templates that control how AI-generated call summaries
      are structured for your team.
  - name: Webhooks
    description: >-
      Manage webhook endpoints to receive real-time notifications about events
      in your Allo account. Each endpoint subscribes to one or more event topics
      and is verified with a signing secret.
  - name: Calls
    description: >-
      Retrieve and search call records with filtering and pagination. Filter
      calls by your Allo phone number.
  - name: Contacts
    description: >-
      Search and retrieve contact information with sorting and pagination.
      Includes engagement level tracking.
  - name: SMS
    description: Send SMS messages to phone numbers using your Allo numbers.
  - name: Phone Numbers
    description: Retrieve information about your Allo phone numbers.
  - name: Analytics
    description: Pre-computed call metrics, team performance, and outbound dial funnel
  - name: CRM
    description: Manage people, companies, and deals in your CRM.
paths:
  /v1/api/sms#france:
    post:
      tags:
        - SMS
      summary: Send SMS (France)
      description: >-
        Send an SMS message to a French phone number using a verified Sender ID.
        The Sender ID must be verified by the Allo team before use. Contact
        support to register your Sender ID.
      operationId: sendSMSFrance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendSMSFranceRequest'
            example:
              sender_id: MyCompany
              to: '+33612345678'
              message: Bonjour, ceci est un message de test
      responses:
        '200':
          description: SMS sent successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendSMSResponse'
              example:
                data:
                  from_number: null
                  sender_id: MyCompany
                  to_number: '+33612345678'
                  type: OUTBOUND
                  content: Bonjour, ceci est un message de test
                  start_date: '2024-01-15T10:30:00'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidSenderId:
                  summary: Invalid Sender ID
                  value:
                    code: INVALID_SENDER_ID
                    details: null
                senderIdNotActive:
                  summary: Sender ID not active
                  value:
                    code: SENDER_ID_NOT_ACTIVE
                    details: null
                invalidToNumber:
                  summary: Invalid to number
                  value:
                    code: INVALID_TO_NUMBER
                    details: null
                invalidLength:
                  summary: Invalid message length
                  value:
                    code: INVALID_LENGTH
                    details: null
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - SmsAuth: []
components:
  schemas:
    SendSMSFranceRequest:
      type: object
      description: >-
        Request body for sending an SMS message in France using a verified
        Sender ID
      required:
        - sender_id
        - to
        - message
      properties:
        sender_id:
          type: string
          description: >-
            Your verified Sender ID (must be verified by the Allo team). This is
            an alphanumeric identifier that will appear as the sender of the
            SMS.
          example: MyCompany
        to:
          type: string
          description: Recipient phone number in France (E.164 format, must start with +33)
          example: '+33612345678'
        message:
          type: string
          description: Message content
          minLength: 1
          maxLength: 1000
          example: Bonjour, ceci est un message de test
    SendSMSResponse:
      type: object
      description: Standard response wrapper for sent SMS
      properties:
        data:
          $ref: '#/components/schemas/TextMessageApiResponse'
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Error code identifying the type of error
        details:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ErrorDetail'
          description: Additional error details, or null if not applicable
    TextMessageApiResponse:
      type: object
      description: Sent SMS message details
      properties:
        from_number:
          type: string
          nullable: true
          description: >-
            Phone number that sent the message. Null when sender_id is used
            instead.
          example: '+1234567890'
        sender_id:
          type: string
          nullable: true
          description: >-
            Sender ID used for the message (alphanumeric identifier). Only
            populated when sending with a verified Sender ID (e.g., for France
            SMS). Null when from_number is used.
          example: MyCompany
        to_number:
          type: string
          description: Phone number that received the message
          example: '+0987654321'
        type:
          type: string
          enum:
            - OUTBOUND
          description: Direction of the message (always OUTBOUND for sent messages)
        content:
          type: string
          description: Content of the SMS message
          example: Hello, this is a test message
        start_date:
          type: string
          format: date-time
          description: When the message was sent
          example: '2024-01-15T10:30:00'
    ErrorDetail:
      type: object
      properties:
        message:
          type: string
        field:
          type: string
  responses:
    Unauthorized:
      description: Unauthorized - Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: API_KEY_INVALID
            details: null
    Forbidden:
      description: Forbidden - API key lacks required scope
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: API_KEY_INSUFFICIENT_SCOPE
            details:
              - message: required=CONTACTS_READ
                field: scope
    TooManyRequests:
      description: Too Many Requests - Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: API_KEY_QUOTA_EXCEEDED
            details:
              - message: limit=1000;type=DAILY;reset_in=3600
                field: DAILY
  securitySchemes:
    SmsAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Scope needed: `SMS_SEND`'

````