Record an agent calendar event
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/agents/calendar-events \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"event_id": "evt_9f3c1a2b",
"title": "Product demo with Acme Corp",
"description": "30-minute walkthrough of the messaging API.",
"start_time": "2026-08-12T15:00:00Z",
"end_time": "2026-08-12T15:30:00Z",
"attendee_email": "buyer@acme.example",
"conversation_id": "conv_5521"
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/agents/calendar-events"
payload = {
"event_id": "evt_9f3c1a2b",
"title": "Product demo with Acme Corp",
"description": "30-minute walkthrough of the messaging API.",
"start_time": "2026-08-12T15:00:00Z",
"end_time": "2026-08-12T15:30:00Z",
"attendee_email": "buyer@acme.example",
"conversation_id": "conv_5521"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
event_id: 'evt_9f3c1a2b',
title: 'Product demo with Acme Corp',
description: '30-minute walkthrough of the messaging API.',
start_time: '2026-08-12T15:00:00Z',
end_time: '2026-08-12T15:30:00Z',
attendee_email: 'buyer@acme.example',
conversation_id: 'conv_5521'
})
};
fetch('https://api.orbit.devotel.io/api/v1/agents/calendar-events', 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.orbit.devotel.io/api/v1/agents/calendar-events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'event_id' => 'evt_9f3c1a2b',
'title' => 'Product demo with Acme Corp',
'description' => '30-minute walkthrough of the messaging API.',
'start_time' => '2026-08-12T15:00:00Z',
'end_time' => '2026-08-12T15:30:00Z',
'attendee_email' => 'buyer@acme.example',
'conversation_id' => 'conv_5521'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.orbit.devotel.io/api/v1/agents/calendar-events"
payload := strings.NewReader("{\n \"event_id\": \"evt_9f3c1a2b\",\n \"title\": \"Product demo with Acme Corp\",\n \"description\": \"30-minute walkthrough of the messaging API.\",\n \"start_time\": \"2026-08-12T15:00:00Z\",\n \"end_time\": \"2026-08-12T15:30:00Z\",\n \"attendee_email\": \"buyer@acme.example\",\n \"conversation_id\": \"conv_5521\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.orbit.devotel.io/api/v1/agents/calendar-events")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"event_id\": \"evt_9f3c1a2b\",\n \"title\": \"Product demo with Acme Corp\",\n \"description\": \"30-minute walkthrough of the messaging API.\",\n \"start_time\": \"2026-08-12T15:00:00Z\",\n \"end_time\": \"2026-08-12T15:30:00Z\",\n \"attendee_email\": \"buyer@acme.example\",\n \"conversation_id\": \"conv_5521\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/agents/calendar-events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"event_id\": \"evt_9f3c1a2b\",\n \"title\": \"Product demo with Acme Corp\",\n \"description\": \"30-minute walkthrough of the messaging API.\",\n \"start_time\": \"2026-08-12T15:00:00Z\",\n \"end_time\": \"2026-08-12T15:30:00Z\",\n \"attendee_email\": \"buyer@acme.example\",\n \"conversation_id\": \"conv_5521\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"event_id": "<string>",
"title": "<string>",
"start_time": "<string>",
"end_time": "<string>",
"status": "webhook_dispatched"
},
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"docs_url": "<string>"
}
}Agents
Record an agent calendar event
Store a calendar event captured by an AI agent’s create_calendar_event tool during a conversation and fire the agent.calendar_event.created webhook so your Google Calendar or Outlook integration can pick it up. Use it to let an agent book meetings or appointments on the customer’s behalf and sync them to your own calendar of record.
POST
/
api
/
v1
/
agents
/
calendar-events
Record an agent calendar event
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/agents/calendar-events \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"event_id": "evt_9f3c1a2b",
"title": "Product demo with Acme Corp",
"description": "30-minute walkthrough of the messaging API.",
"start_time": "2026-08-12T15:00:00Z",
"end_time": "2026-08-12T15:30:00Z",
"attendee_email": "buyer@acme.example",
"conversation_id": "conv_5521"
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/agents/calendar-events"
payload = {
"event_id": "evt_9f3c1a2b",
"title": "Product demo with Acme Corp",
"description": "30-minute walkthrough of the messaging API.",
"start_time": "2026-08-12T15:00:00Z",
"end_time": "2026-08-12T15:30:00Z",
"attendee_email": "buyer@acme.example",
"conversation_id": "conv_5521"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
event_id: 'evt_9f3c1a2b',
title: 'Product demo with Acme Corp',
description: '30-minute walkthrough of the messaging API.',
start_time: '2026-08-12T15:00:00Z',
end_time: '2026-08-12T15:30:00Z',
attendee_email: 'buyer@acme.example',
conversation_id: 'conv_5521'
})
};
fetch('https://api.orbit.devotel.io/api/v1/agents/calendar-events', 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.orbit.devotel.io/api/v1/agents/calendar-events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'event_id' => 'evt_9f3c1a2b',
'title' => 'Product demo with Acme Corp',
'description' => '30-minute walkthrough of the messaging API.',
'start_time' => '2026-08-12T15:00:00Z',
'end_time' => '2026-08-12T15:30:00Z',
'attendee_email' => 'buyer@acme.example',
'conversation_id' => 'conv_5521'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.orbit.devotel.io/api/v1/agents/calendar-events"
payload := strings.NewReader("{\n \"event_id\": \"evt_9f3c1a2b\",\n \"title\": \"Product demo with Acme Corp\",\n \"description\": \"30-minute walkthrough of the messaging API.\",\n \"start_time\": \"2026-08-12T15:00:00Z\",\n \"end_time\": \"2026-08-12T15:30:00Z\",\n \"attendee_email\": \"buyer@acme.example\",\n \"conversation_id\": \"conv_5521\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.orbit.devotel.io/api/v1/agents/calendar-events")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"event_id\": \"evt_9f3c1a2b\",\n \"title\": \"Product demo with Acme Corp\",\n \"description\": \"30-minute walkthrough of the messaging API.\",\n \"start_time\": \"2026-08-12T15:00:00Z\",\n \"end_time\": \"2026-08-12T15:30:00Z\",\n \"attendee_email\": \"buyer@acme.example\",\n \"conversation_id\": \"conv_5521\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/agents/calendar-events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"event_id\": \"evt_9f3c1a2b\",\n \"title\": \"Product demo with Acme Corp\",\n \"description\": \"30-minute walkthrough of the messaging API.\",\n \"start_time\": \"2026-08-12T15:00:00Z\",\n \"end_time\": \"2026-08-12T15:30:00Z\",\n \"attendee_email\": \"buyer@acme.example\",\n \"conversation_id\": \"conv_5521\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"event_id": "<string>",
"title": "<string>",
"start_time": "<string>",
"end_time": "<string>",
"status": "webhook_dispatched"
},
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"docs_url": "<string>"
}
}Authorizations
BearerApiKey
Dashboard JWT token from Clerk
Body
application/json
Stable identifier for the event (used for idempotency and webhook correlation).
Event title.
Maximum string length:
500Event start time (ISO-8601).
Optional event description.
Maximum string length:
2000Optional event end time (ISO-8601).
Optional attendee email address.
Conversation the event was booked from.
⌘I