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

# List GHL Appointments

> List GHL Appointments.

### Authorizations

<ParamField header="X-Api-Key" type="string" required>
  Your Agni API key used to authenticate the request. Pass it in the `X-Api-Key` header. Find or rotate it from your Ravan AI account settings.
</ParamField>

***

### Query Parameters

<ParamField query="agent_id" type="string">
  The unique ID of the agent that should own, handle, or be assigned to this resource. Use the `id` returned by the Agent API.
</ParamField>

<ParamField query="status" type="string">
  Filters or sets the current status of the resource. Use one of the status values supported by the endpoint.
</ParamField>

<ParamField query="limit" type="integer">
  The maximum number of records to return. Use this with `offset` or pagination fields to page through results.
</ParamField>

<ParamField query="org_id" type="string">
  The organization ID that owns the resource. Use the organization ID from your Agni account.
</ParamField>

***

### Response

<ResponseField name="success" type="boolean">
  Whether the request succeeded.
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable status message.
</ResponseField>

<ResponseField name="data" type="object">
  data field.

  <Expandable title="data">
    <ResponseField name="appointments" type="object[]">
      appointments field.

      <Expandable title="appointments[]">
        <ResponseField name="id" type="string">
          id field.
        </ResponseField>

        <ResponseField name="ghl_appointment_id" type="string">
          ghl\_appointment\_id field.
        </ResponseField>

        <ResponseField name="contact_id" type="string">
          contact\_id field.
        </ResponseField>

        <ResponseField name="agent_id" type="string">
          agent\_id field.
        </ResponseField>

        <ResponseField name="agent_name" type="string">
          agent\_name field.
        </ResponseField>

        <ResponseField name="contact_name" type="string">
          contact\_name field.
        </ResponseField>

        <ResponseField name="contact_email" type="string">
          contact\_email field.
        </ResponseField>

        <ResponseField name="contact_phone" type="string">
          contact\_phone field.
        </ResponseField>

        <ResponseField name="appointment_time" type="string">
          appointment\_time field.
        </ResponseField>

        <ResponseField name="status" type="string">
          status field.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="count" type="integer">
      count field.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "message": "Request completed successfully",
    "data": {
      "appointments": [
        {
          "id": "id_123",
          "ghl_appointment_id": "id_123",
          "contact_id": "id_123",
          "agent_id": "id_123",
          "agent_name": "example",
          "contact_name": "example",
          "contact_email": "alex@example.com",
          "contact_phone": "+14155550100",
          "appointment_time": "2026-03-14T12:00:00Z",
          "status": "active"
        }
      ],
      "count": 1
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml GET /api/v1/ghl/appointments
openapi: 3.0.1
info:
  title: Agni API
  version: 1.0.0
  description: >-
    Agni API for managing agents, tools, widget settings, telephony, and
    integrations.
servers:
  - url: https://api.ravan.ai
security:
  - X-Api-Key: []
tags:
  - name: AgentService
  - name: AgentToolService
  - name: WidgetSettingsService
  - name: PhoneService
  - name: AppointmentService
  - name: GHLService
  - name: CalComService
  - name: CampaignService
  - name: ContactService
  - name: CallingService
  - name: RAGService
  - name: ModelService
  - name: HealthService
paths:
  /api/v1/ghl/appointments:
    get:
      tags:
        - GHLService
      summary: List GHL Appointments
      operationId: ListGHLAppointments
      parameters:
        - name: agent_id
          in: query
          schema:
            type: string
          description: Filter by agent ID
        - name: status
          in: query
          schema:
            type: string
          description: Filter by appointment status
        - name: limit
          in: query
          schema:
            type: integer
            format: int32
            default: 50
            maximum: 200
          description: Number of results to return (max 200)
        - name: org_id
          in: query
          schema:
            type: string
          description: Organization ID (fallback)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGHLAppointmentsResponse'
components:
  schemas:
    ListGHLAppointmentsResponse:
      type: object
      properties:
        success:
          type: boolean
        message:
          type: string
        data:
          type: object
          properties:
            appointments:
              type: array
              items:
                $ref: '#/components/schemas/GHLAppointment'
            count:
              type: integer
    GHLAppointment:
      type: object
      properties:
        id:
          type: string
        ghl_appointment_id:
          type: string
        contact_id:
          type: string
        agent_id:
          type: string
        agent_name:
          type: string
        contact_name:
          type: string
        contact_email:
          type: string
        contact_phone:
          type: string
        appointment_time:
          type: string
        status:
          type: string
  securitySchemes:
    X-Api-Key:
      type: apiKey
      in: header
      name: X-Api-Key

````