> ## 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.

# Retrieve an RCS agent

> Retrieves an RCS agent, section statuses, test devices, carrier approvals, and provider capabilities.



## OpenAPI

````yaml /openapi/source/external/messaging/rcs-registration.json get /rcs/agents/{id}
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/agents/{id}:
    get:
      tags:
        - RCS Agents
      summary: Retrieve an RCS agent
      description: >-
        Retrieves an RCS agent, section statuses, test devices, carrier
        approvals, and provider capabilities.
      operationId: RetrieveRcsAgent
      parameters:
        - $ref: '#/components/parameters/AgentId'
      responses:
        '200':
          description: The requested RCS agent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      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 Agent = await client.rcs.agents.retrieve('id');

            console.log(Agent.agent_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
            )
            agent = client.rcs.agents.retrieve(
                "id",
            )
            print(agent.agent_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\tagent, err := client.Rcs.Agents.Get(\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\", agent.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().agents().retrieve("id");
                }
            }
        - lang: Ruby
          source: |-
            require "telnyx"

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

            agent = telnyx.rcs.agents.retrieve("id")

            puts(agent)
        - 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 {
              $agent = $client->rcs->agents->retrieve(
                'id',
              );

              var_dump($agent);
            } catch (APIException $e) {
              echo $e->getMessage();
            }
        - lang: CLI
          source: |-
            telnyx rcs:agents retrieve \
              --api-key 'My API Key' \
              --id id
components:
  parameters:
    AgentId:
      name: id
      in: path
      required: true
      description: The Telnyx-assigned agent identifier.
      schema:
        type: string
        format: uuid
  schemas:
    AgentResponse:
      type: object
      additionalProperties: false
      properties:
        agent_id:
          type: string
          format: uuid
        brand_id:
          type: string
          format: uuid
        display_name:
          type: string
        use_case:
          $ref: '#/components/schemas/AgentUseCase'
        status:
          $ref: '#/components/schemas/AgentState'
        profile_id:
          type:
            - string
            - 'null'
        basics_status:
          oneOf:
            - $ref: '#/components/schemas/AgentSubmissionStatus'
            - type: 'null'
        campaign_status:
          oneOf:
            - $ref: '#/components/schemas/AgentSubmissionStatus'
            - type: 'null'
        testing_status:
          oneOf:
            - $ref: '#/components/schemas/AgentSubmissionStatus'
            - type: 'null'
        billing_category:
          oneOf:
            - $ref: '#/components/schemas/BillingCategory'
            - type: 'null'
        hosting_region:
          type:
            - string
            - 'null'
        configuration:
          $ref: '#/components/schemas/AgentConfiguration'
        carrier_approvals:
          type: array
          items:
            $ref: '#/components/schemas/CarrierApprovalResponse'
        test_devices:
          type: array
          items:
            $ref: '#/components/schemas/TestDeviceResponse'
        capabilities:
          $ref: '#/components/schemas/CapabilitiesResponse'
      required:
        - agent_id
        - brand_id
        - display_name
        - use_case
        - status
        - profile_id
        - basics_status
        - campaign_status
        - testing_status
        - billing_category
        - hosting_region
        - configuration
        - carrier_approvals
        - test_devices
        - capabilities
      example:
        agent_id: 22222222-2222-4222-8222-222222222222
        brand_id: 11111111-1111-4111-8111-111111111111
        display_name: Acme Order Updates
        use_case: TRANSACTIONAL
        status: SUBMITTED
        profile_id: 40000000-0000-0000-0000-000000000001
        basics_status: SUBMITTED
        campaign_status: null
        testing_status: null
        billing_category: NON_CONVERSATIONAL
        hosting_region: null
        configuration:
          basics:
            description: Order confirmations and delivery updates
            logo_url: https://www.example.com/rcs/logo.png
            hero_url: https://www.example.com/rcs/hero.png
            brand_color: '#123456'
            privacy_policy_url: https://www.example.com/privacy
            terms_and_conditions_url: https://www.example.com/terms
            email:
              address: support@example.com
              label: Support
          campaign: null
          testing: null
        carrier_approvals: []
        test_devices: []
        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
    AgentUseCase:
      type: string
      enum:
        - MULTI_USE
        - PROMOTIONAL
        - TRANSACTIONAL
        - OTP
    AgentState:
      type: string
      enum:
        - CREATED
        - SUBMITTED
        - VERIFYING
        - VERIFIED
        - LAUNCHING
        - LAUNCHED
        - LIVE
        - REJECTED
        - FAILED
    AgentSubmissionStatus:
      type: string
      enum:
        - SUBMITTED
        - APPROVED
        - REJECTED
    BillingCategory:
      type: string
      enum:
        - NON_CONVERSATIONAL
        - CONVERSATIONAL
    AgentConfiguration:
      type: object
      additionalProperties: false
      properties:
        basics:
          $ref: '#/components/schemas/AgentBasicsConfiguration'
        campaign:
          oneOf:
            - $ref: '#/components/schemas/AgentCampaignConfiguration'
            - type: 'null'
        testing:
          oneOf:
            - $ref: '#/components/schemas/AgentTestingConfiguration'
            - type: 'null'
      required:
        - basics
    CarrierApprovalResponse:
      type: object
      additionalProperties: false
      properties:
        approval_id:
          type: string
          format: uuid
        scope_type:
          $ref: '#/components/schemas/CarrierApprovalScope'
        status:
          $ref: '#/components/schemas/CarrierApprovalStatus'
        carrier:
          type:
            - string
            - 'null'
        submitted_at:
          type:
            - string
            - 'null'
          format: date-time
        approved_at:
          type:
            - string
            - 'null'
          format: date-time
        rejected_reason:
          type:
            - string
            - 'null'
      required:
        - approval_id
        - scope_type
        - status
        - carrier
        - submitted_at
        - approved_at
        - rejected_reason
      example:
        approval_id: 33333333-3333-4333-8333-333333333333
        scope_type: hub
        status: SUBMITTED
        carrier: null
        submitted_at: '2026-08-10T12:00:00Z'
        approved_at: null
        rejected_reason: null
    TestDeviceResponse:
      type: object
      additionalProperties: false
      properties:
        test_device_id:
          type: string
          format: uuid
        phone_number:
          type: string
        invite_status:
          $ref: '#/components/schemas/TestDeviceInviteStatus'
      required:
        - test_device_id
        - phone_number
        - invite_status
      example:
        test_device_id: 44444444-4444-4444-8444-444444444444
        phone_number: '+13125550123'
        invite_status: ACCEPTED
    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.
    AgentBasicsConfiguration:
      type: object
      additionalProperties: false
      description: >-
        Basic agent identity and contact information. At least one complete
        phone, website, or email contact is required.
      properties:
        description:
          type: string
          minLength: 1
          maxLength: 100
        logo_url:
          $ref: '#/components/schemas/HttpUrl'
        hero_url:
          $ref: '#/components/schemas/HttpUrl'
        brand_color:
          type: string
          pattern: ^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$
        privacy_policy_url:
          $ref: '#/components/schemas/HttpUrl'
        terms_and_conditions_url:
          $ref: '#/components/schemas/HttpUrl'
        phone_number:
          oneOf:
            - $ref: '#/components/schemas/AgentPhoneContact'
            - type: 'null'
        website:
          oneOf:
            - $ref: '#/components/schemas/AgentWebsiteContact'
            - type: 'null'
        email:
          oneOf:
            - $ref: '#/components/schemas/AgentEmailContact'
            - type: 'null'
      anyOf:
        - required:
            - phone_number
          properties:
            phone_number:
              $ref: '#/components/schemas/AgentPhoneContact'
        - required:
            - website
          properties:
            website:
              $ref: '#/components/schemas/AgentWebsiteContact'
        - required:
            - email
          properties:
            email:
              $ref: '#/components/schemas/AgentEmailContact'
      required:
        - description
        - logo_url
        - hero_url
        - brand_color
        - privacy_policy_url
        - terms_and_conditions_url
    AgentCampaignConfiguration:
      type: object
      additionalProperties: false
      properties:
        company_overview:
          type: string
          minLength: 1
          maxLength: 2000
        agent_overview:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 2000
        interactions:
          type: array
          items:
            $ref: '#/components/schemas/AgentInteraction'
        message_examples:
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 2000
        consent_settings:
          oneOf:
            - $ref: '#/components/schemas/AgentConsentConfiguration'
            - type: 'null'
        additional_information:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 2000
      required:
        - company_overview
    AgentTestingConfiguration:
      type: object
      additionalProperties: false
      properties:
        test_url:
          $ref: '#/components/schemas/HttpUrl'
          description: A publicly accessible test video or evidence URL.
        message_id:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 255
        additional_information:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 2000
      required:
        - test_url
    CarrierApprovalScope:
      type: string
      enum:
        - carrier
        - hub
        - bot
    CarrierApprovalStatus:
      type: string
      enum:
        - PENDING
        - SUBMITTED
        - APPROVED
        - REJECTED
    TestDeviceInviteStatus:
      type: string
      enum:
        - PENDING
        - ACCEPTED
        - DECLINED
    HttpUrl:
      type: string
      format: uri
      minLength: 1
      pattern: ^[Hh][Tt][Tt][Pp][Ss]?://
    AgentPhoneContact:
      type: object
      additionalProperties: false
      properties:
        number:
          type: string
          maxLength: 16
          pattern: ^\+[1-9][0-9]{1,14}$
        label:
          type: string
          minLength: 1
          maxLength: 25
      required:
        - number
        - label
    AgentWebsiteContact:
      type: object
      additionalProperties: false
      properties:
        url:
          $ref: '#/components/schemas/HttpUrl'
        label:
          type: string
          minLength: 1
          maxLength: 25
      required:
        - url
        - label
    AgentEmailContact:
      type: object
      additionalProperties: false
      properties:
        address:
          type: string
          minLength: 3
          maxLength: 254
          format: email
          pattern: ^[^@\s]+@[^@\s]+\.[^@\s]+$
        label:
          type: string
          minLength: 1
          maxLength: 25
      required:
        - address
        - label
    AgentInteraction:
      type: object
      propertyNames:
        enum:
          - interaction_type
          - description
      properties:
        interaction_type:
          $ref: '#/components/schemas/AgentInteractionType'
        description:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 2000
          description: Required when interaction_type is `OTHER`.
      required:
        - interaction_type
      allOf:
        - if:
            properties:
              interaction_type:
                const: OTHER
            required:
              - interaction_type
          then:
            properties:
              description:
                type: string
                minLength: 1
                maxLength: 2000
            required:
              - description
    AgentConsentConfiguration:
      type: object
      propertyNames:
        enum:
          - opt_in_methods
          - call_to_action
          - call_to_action_url
          - call_to_action_media_url
          - double_opt_in
          - double_opt_in_message
          - opt_in_message
          - help_response
          - opt_out_response
      properties:
        opt_in_methods:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/AgentOptInMethod'
        call_to_action:
          type: string
          minLength: 1
          maxLength: 2000
        call_to_action_url:
          oneOf:
            - $ref: '#/components/schemas/HttpUrl'
            - type: 'null'
          description: Required when an opt-in method is `WEBSITE`.
        call_to_action_media_url:
          oneOf:
            - $ref: '#/components/schemas/HttpUrl'
            - type: 'null'
          description: Required when an opt-in method is `WEBSITE` or `MOBILE_APP`.
        double_opt_in:
          type: boolean
        double_opt_in_message:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 2000
          description: Required when double_opt_in is true.
        opt_in_message:
          type: string
          minLength: 1
          maxLength: 2000
        help_response:
          type: string
          minLength: 1
          maxLength: 2000
        opt_out_response:
          type: string
          minLength: 1
          maxLength: 2000
      required:
        - opt_in_methods
        - call_to_action
        - double_opt_in
        - opt_in_message
        - help_response
        - opt_out_response
      not:
        anyOf:
          - properties:
              opt_in_methods:
                contains:
                  properties:
                    method_type:
                      const: WEBSITE
                  required:
                    - method_type
            required:
              - opt_in_methods
            anyOf:
              - not:
                  properties:
                    call_to_action_url: {}
                  required:
                    - call_to_action_url
              - properties:
                  call_to_action_url:
                    type: 'null'
              - not:
                  properties:
                    call_to_action_media_url: {}
                  required:
                    - call_to_action_media_url
              - properties:
                  call_to_action_media_url:
                    type: 'null'
          - properties:
              opt_in_methods:
                contains:
                  properties:
                    method_type:
                      const: MOBILE_APP
                  required:
                    - method_type
            required:
              - opt_in_methods
            anyOf:
              - not:
                  properties:
                    call_to_action_media_url: {}
                  required:
                    - call_to_action_media_url
              - properties:
                  call_to_action_media_url:
                    type: 'null'
          - properties:
              double_opt_in:
                const: true
            required:
              - double_opt_in
            anyOf:
              - not:
                  properties:
                    double_opt_in_message: {}
                  required:
                    - double_opt_in_message
              - properties:
                  double_opt_in_message:
                    type: 'null'
    AgentInteractionType:
      type: string
      enum:
        - TRANSACTIONAL_UPDATES
        - CUSTOMER_SUPPORT
        - LOYALTY_OR_REWARD
        - MARKETING_OR_PROMOTIONAL
        - ACCOUNT_ALERTS
        - TWO_WAY_CONVERSATION
        - OTHER
    AgentOptInMethod:
      type: object
      propertyNames:
        enum:
          - method_type
          - description
      properties:
        method_type:
          $ref: '#/components/schemas/AgentOptInMethodType'
        description:
          type:
            - string
            - 'null'
          minLength: 1
          maxLength: 2000
          description: Required when method_type is `OTHER`.
      required:
        - method_type
      allOf:
        - if:
            properties:
              method_type:
                const: OTHER
            required:
              - method_type
          then:
            properties:
              description:
                type: string
                minLength: 1
                maxLength: 2000
            required:
              - description
    AgentOptInMethodType:
      type: string
      enum:
        - SMS
        - WEBSITE
        - MOBILE_APP
        - QR_CODE
        - SALE_POINT
        - OTHER
  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'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key

````