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

# Submit an RCS brand

> Starts asynchronous provider provisioning and external review for a brand. Repeating this request for an in-progress brand returns its current state without creating new work.



## OpenAPI

````yaml /openapi/source/external/messaging/rcs-registration.json post /rcs/brands/{id}/submit
openapi: 3.1.0
info:
  title: Telnyx RCS Registration API
  description: >-
    Create RCS brands and agents, submit them for external review, manage test
    devices, and track carrier launch.
  version: 1.0.0
  contact:
    email: support@telnyx.com
  x-latency-category: responsive
  x-endpoint-cost: light
servers:
  - url: https://api.telnyx.com/v2
    description: Telnyx API v2
security:
  - bearerAuth: []
tags:
  - name: RCS Brands
    description: Manage the legal business entities that operate RCS agents.
  - name: RCS Agents
    description: Manage RCS agent registration, testing, verification, and launch.
paths:
  /rcs/brands/{id}/submit:
    post:
      tags:
        - RCS Brands
      summary: Submit an RCS brand
      description: >-
        Starts asynchronous provider provisioning and external review for a
        brand. Repeating this request for an in-progress brand returns its
        current state without creating new work.
      operationId: SubmitRcsBrand
      parameters:
        - $ref: '#/components/parameters/BrandId'
      responses:
        '202':
          description: The brand submission was accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
      x-codeSamples:
        - lang: JavaScript
          source: |-
            import Telnyx from 'telnyx';

            const client = new Telnyx({
              apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
            });

            const response = await client.rcs.brands.submit('id');

            console.log(response.brand_id);
        - lang: Python
          source: |
            import os
            from telnyx import Telnyx

            client = Telnyx(
                api_key=os.environ.get("TELNYX_API_KEY"),  # This is the default and can be omitted
            )
            response = client.rcs.brands.submit(
                "id",
            )
            print(response.brand_id)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/team-telnyx/telnyx-go\"\n\t\"github.com/team-telnyx/telnyx-go/option\"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Rcs.Brands.Submit(\n\t\tcontext.TODO(),\n\t\t\"id\",\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n}\n"
        - lang: Java
          source: |-
            package com.telnyx.sdk.example;

            import com.telnyx.sdk.client.TelnyxClient;
            import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;

            public final class Main {
                private Main() {}

                public static void main(String[] args) {
                    TelnyxClient client = TelnyxOkHttpClient.fromEnv();

                    var response = client.rcs().brands().submit("id");
                }
            }
        - lang: Ruby
          source: |-
            require "telnyx"

            telnyx = Telnyx::Client.new(api_key: "My API Key")

            response = telnyx.rcs.brands.submit("id")

            puts(response)
        - lang: PHP
          source: >-
            <?php


            require_once dirname(__DIR__) . '/vendor/autoload.php';


            use Telnyx\Client;

            use Telnyx\Core\Exceptions\APIException;


            $client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API
            Key');


            try {
              $response = $client->rcs->brands->submit(
                'id',
              );

              var_dump($response);
            } catch (APIException $e) {
              echo $e->getMessage();
            }
        - lang: CLI
          source: |-
            telnyx rcs:brands submit \
              --api-key 'My API Key' \
              --id id
components:
  parameters:
    BrandId:
      name: id
      in: path
      required: true
      description: The Telnyx-assigned brand identifier.
      schema:
        type: string
        format: uuid
  schemas:
    BrandResponse:
      type: object
      additionalProperties: false
      properties:
        brand_id:
          type: string
          format: uuid
        display_name:
          type: string
        legal_name:
          type: string
        legal_entity_type:
          type: string
        organization_type:
          type: string
        website_url:
          $ref: '#/components/schemas/HttpUrl'
        status:
          $ref: '#/components/schemas/BrandState'
        profile_id:
          type:
            - string
            - 'null'
        identifiers:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/BrandIdentifier'
        addresses:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/BrandAddress'
        contacts:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/BrandContact'
        capabilities:
          $ref: '#/components/schemas/CapabilitiesResponse'
      required:
        - brand_id
        - display_name
        - legal_name
        - legal_entity_type
        - organization_type
        - website_url
        - status
        - profile_id
        - identifiers
        - addresses
        - contacts
        - capabilities
      example:
        brand_id: 11111111-1111-4111-8111-111111111111
        display_name: Acme
        legal_name: Acme LLC
        legal_entity_type: LIMITED_LIABILITY_COMPANY
        organization_type: PRIVATE_PROFIT
        website_url: https://www.example.com
        status: CREATED
        profile_id: 40000000-0000-0000-0000-000000000001
        identifiers:
          ein:
            identifier_type: EIN
            value: 12-3456789
        addresses:
          primary:
            line_1: 1 Main Street
            city: Chicago
            administrative_area: IL
            postal_code: '60601'
            country_code: US
        contacts:
          brand:
            contact_type: BRAND
            first_name: Jane
            last_name: Doe
            title: Messaging Operations Manager
            email: jane@example.com
            phone_number: '+13125550100'
        capabilities:
          brand_entity: true
          brand_verification: true
          submission_sections: true
          distinct_launch_phase: false
          per_carrier_approval: false
          templates: false
          campaigns: false
          vendor_webhooks: false
          invite_test_devices: false
    HttpUrl:
      type: string
      format: uri
      minLength: 1
      pattern: ^[Hh][Tt][Tt][Pp][Ss]?://
    BrandState:
      type: string
      enum:
        - CREATED
        - CONFIGURED
        - SUBMITTED
        - REVIEWING
        - VETTING
        - VERIFIED
        - REJECTED
        - FAILED
    BrandIdentifier:
      oneOf:
        - $ref: '#/components/schemas/EinBrandIdentifier'
        - $ref: '#/components/schemas/StockSymbolBrandIdentifier'
    BrandAddress:
      type: object
      additionalProperties: false
      properties:
        line_1:
          type: string
          minLength: 1
          maxLength: 255
        line_2:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 255
        city:
          type: string
          minLength: 1
          maxLength: 100
        administrative_area:
          type: string
          minLength: 1
          maxLength: 100
        postal_code:
          type: string
          minLength: 1
          maxLength: 32
        country_code:
          type: string
          pattern: ^[A-Z]{2}$
          description: The two-letter ISO 3166-1 country code.
      required:
        - line_1
        - city
        - administrative_area
        - postal_code
        - country_code
    BrandContact:
      type: object
      propertyNames:
        enum:
          - contact_type
          - first_name
          - last_name
          - title
          - email
          - phone_number
      properties:
        contact_type:
          $ref: '#/components/schemas/BrandContactType'
        first_name:
          type: string
          minLength: 1
          maxLength: 100
        last_name:
          type: string
          minLength: 1
          maxLength: 100
        title:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 100
        email:
          type: string
          minLength: 3
          maxLength: 254
          format: email
          pattern: ^[^@\s]+@[^@\s]+\.[^@\s]+$
        phone_number:
          type: string
          maxLength: 16
          pattern: ^\+[1-9][0-9]{1,14}$
      required:
        - contact_type
        - first_name
        - last_name
        - email
        - phone_number
    CapabilitiesResponse:
      type: object
      additionalProperties: false
      properties:
        brand_entity:
          type: boolean
        brand_verification:
          type: boolean
        submission_sections:
          type: boolean
        distinct_launch_phase:
          type: boolean
        per_carrier_approval:
          type: boolean
        templates:
          type: boolean
        campaigns:
          type: boolean
        vendor_webhooks:
          type: boolean
        invite_test_devices:
          type: boolean
      required:
        - brand_entity
        - brand_verification
        - submission_sections
        - distinct_launch_phase
        - per_carrier_approval
        - templates
        - campaigns
        - vendor_webhooks
        - invite_test_devices
    ErrorResponse:
      type: object
      properties:
        detail:
          type: string
        errors:
          type: array
          items:
            type: object
            additionalProperties: true
      additionalProperties: true
      example:
        detail: The requested RCS resource was not found.
    EinBrandIdentifier:
      type: object
      additionalProperties: false
      properties:
        identifier_type:
          const: EIN
        value:
          type: string
          minLength: 1
          maxLength: 255
          pattern: ^(?:[0-9]{9}|[0-9]{2}-[0-9]{7})$
          description: Nine digits, optionally formatted as NN-NNNNNNN.
      required:
        - identifier_type
        - value
    StockSymbolBrandIdentifier:
      type: object
      additionalProperties: false
      properties:
        identifier_type:
          const: STOCK_SYMBOL
        value:
          type: string
          minLength: 1
          maxLength: 255
          pattern: ^\S+:\S+$
          description: A stock symbol using EXCHANGE:SYMBOL.
      required:
        - identifier_type
        - value
    BrandContactType:
      type: string
      enum:
        - BRAND
        - PRIMARY
        - OFFICER
        - AGENT
        - RESPONSIBLE_PARTY
        - BILLING
        - UNKNOWN
  responses:
    Unauthorized:
      description: The request is not authenticated.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: >-
        The resource does not exist, is not owned by the organization, or the
        provider does not support the requested capability.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Conflict:
      description: >-
        The operation is not allowed in the current lifecycle state or the
        idempotency key was used for a different request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key

````