List GHL Appointments
curl --request GET \
--url https://api.ravan.ai/api/v1/ghl/appointments \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.ravan.ai/api/v1/ghl/appointments"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.ravan.ai/api/v1/ghl/appointments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ravan.ai/api/v1/ghl/appointments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ravan.ai/api/v1/ghl/appointments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ravan.ai/api/v1/ghl/appointments")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ravan.ai/api/v1/ghl/appointments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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
}
}
GHL Integration API
List GHL Appointments
List GHL Appointments.
GET
/
api
/
v1
/
ghl
/
appointments
List GHL Appointments
curl --request GET \
--url https://api.ravan.ai/api/v1/ghl/appointments \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.ravan.ai/api/v1/ghl/appointments"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.ravan.ai/api/v1/ghl/appointments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ravan.ai/api/v1/ghl/appointments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ravan.ai/api/v1/ghl/appointments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ravan.ai/api/v1/ghl/appointments")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ravan.ai/api/v1/ghl/appointments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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
}
}
Authorizations
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.Query Parameters
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.string
Filters or sets the current status of the resource. Use one of the status values supported by the endpoint.
integer
The maximum number of records to return. Use this with
offset or pagination fields to page through results.string
The organization ID that owns the resource. Use the organization ID from your Agni account.
Response
boolean
Whether the request succeeded.
string
Human-readable status message.
object
data field.
Show data
Show data
object[]
integer
count field.
{
"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
}
}
Authorizations
Query Parameters
Filter by agent ID
Filter by appointment status
Number of results to return (max 200)
Required range:
x <= 200Organization ID (fallback)

