Book a demo from the dashboard
curl --request POST \
--url https://api.devhelm.io/api/v1/demo-booking/bookings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"leadId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fullName": "<string>",
"email": "jsmith@example.com",
"companyUrl": "<string>",
"product": "<string>",
"message": "<string>",
"startTime": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"slotToken": "<string>",
"attribution": {}
}
'import requests
url = "https://api.devhelm.io/api/v1/demo-booking/bookings"
payload = {
"leadId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fullName": "<string>",
"email": "jsmith@example.com",
"companyUrl": "<string>",
"product": "<string>",
"message": "<string>",
"startTime": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"slotToken": "<string>",
"attribution": {}
}
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({
leadId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
attemptId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
fullName: '<string>',
email: 'jsmith@example.com',
companyUrl: '<string>',
product: '<string>',
message: '<string>',
startTime: '2023-11-07T05:31:56Z',
timezone: '<string>',
slotToken: '<string>',
attribution: {}
})
};
fetch('https://api.devhelm.io/api/v1/demo-booking/bookings', 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.devhelm.io/api/v1/demo-booking/bookings",
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([
'leadId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'attemptId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'fullName' => '<string>',
'email' => 'jsmith@example.com',
'companyUrl' => '<string>',
'product' => '<string>',
'message' => '<string>',
'startTime' => '2023-11-07T05:31:56Z',
'timezone' => '<string>',
'slotToken' => '<string>',
'attribution' => [
]
]),
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.devhelm.io/api/v1/demo-booking/bookings"
payload := strings.NewReader("{\n \"leadId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"attemptId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"fullName\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"companyUrl\": \"<string>\",\n \"product\": \"<string>\",\n \"message\": \"<string>\",\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"slotToken\": \"<string>\",\n \"attribution\": {}\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.devhelm.io/api/v1/demo-booking/bookings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"leadId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"attemptId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"fullName\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"companyUrl\": \"<string>\",\n \"product\": \"<string>\",\n \"message\": \"<string>\",\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"slotToken\": \"<string>\",\n \"attribution\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devhelm.io/api/v1/demo-booking/bookings")
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 \"leadId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"attemptId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"fullName\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"companyUrl\": \"<string>\",\n \"product\": \"<string>\",\n \"message\": \"<string>\",\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"slotToken\": \"<string>\",\n \"attribution\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "RECEIVED",
"startTime": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"meetingUrl": "<string>",
"cancelUrl": "<string>",
"rescheduleUrl": "<string>",
"errorCode": "<string>"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}dashboard-demo-booking-controller
Book a demo from the dashboard
POST
/
api
/
v1
/
demo-booking
/
bookings
Book a demo from the dashboard
curl --request POST \
--url https://api.devhelm.io/api/v1/demo-booking/bookings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"leadId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fullName": "<string>",
"email": "jsmith@example.com",
"companyUrl": "<string>",
"product": "<string>",
"message": "<string>",
"startTime": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"slotToken": "<string>",
"attribution": {}
}
'import requests
url = "https://api.devhelm.io/api/v1/demo-booking/bookings"
payload = {
"leadId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fullName": "<string>",
"email": "jsmith@example.com",
"companyUrl": "<string>",
"product": "<string>",
"message": "<string>",
"startTime": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"slotToken": "<string>",
"attribution": {}
}
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({
leadId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
attemptId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
fullName: '<string>',
email: 'jsmith@example.com',
companyUrl: '<string>',
product: '<string>',
message: '<string>',
startTime: '2023-11-07T05:31:56Z',
timezone: '<string>',
slotToken: '<string>',
attribution: {}
})
};
fetch('https://api.devhelm.io/api/v1/demo-booking/bookings', 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.devhelm.io/api/v1/demo-booking/bookings",
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([
'leadId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'attemptId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'fullName' => '<string>',
'email' => 'jsmith@example.com',
'companyUrl' => '<string>',
'product' => '<string>',
'message' => '<string>',
'startTime' => '2023-11-07T05:31:56Z',
'timezone' => '<string>',
'slotToken' => '<string>',
'attribution' => [
]
]),
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.devhelm.io/api/v1/demo-booking/bookings"
payload := strings.NewReader("{\n \"leadId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"attemptId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"fullName\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"companyUrl\": \"<string>\",\n \"product\": \"<string>\",\n \"message\": \"<string>\",\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"slotToken\": \"<string>\",\n \"attribution\": {}\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.devhelm.io/api/v1/demo-booking/bookings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"leadId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"attemptId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"fullName\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"companyUrl\": \"<string>\",\n \"product\": \"<string>\",\n \"message\": \"<string>\",\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"slotToken\": \"<string>\",\n \"attribution\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devhelm.io/api/v1/demo-booking/bookings")
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 \"leadId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"attemptId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"fullName\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"companyUrl\": \"<string>\",\n \"product\": \"<string>\",\n \"message\": \"<string>\",\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\",\n \"slotToken\": \"<string>\",\n \"attribution\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "RECEIVED",
"startTime": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"meetingUrl": "<string>",
"cancelUrl": "<string>",
"rescheduleUrl": "<string>",
"errorCode": "<string>"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}{
"status": 404,
"code": "NOT_FOUND",
"category": "not_found",
"message": "Monitor not found",
"timestamp": 1737302400000,
"requestId": "5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a"
}Authorizations
API key (dh_live_...) or Auth0 JWT token
Body
application/json
Lead identifier reused for this form submission
Booking identifier reused when retrying the same time
Your full name
Maximum string length:
150Email address for the calendar invitation
Maximum string length:
254Optional company website URL
Maximum string length:
2048Pattern:
^$|https?://[^\s]+Product you would like to explore
Maximum string length:
100Optional context for your demo
Maximum string length:
3000Selected demo start time in UTC
IANA timezone for your calendar invitation
Maximum string length:
100Availability token for the selected time
Maximum string length:
512Marketing attribution captured with this request
Show child attributes
Show child attributes
Response
OK
Identifier for this booking attempt
Current booking state
Available options:
RECEIVED, CREATING, RECONCILING, CONFIRMED, SLOT_UNAVAILABLE, PROVIDER_UNAVAILABLE, NEEDS_FOLLOW_UP, CANCELED Demo start time in UTC
Timezone for the calendar invitation
Link to join the confirmed demo
Link to cancel the confirmed demo
Link to reschedule the confirmed demo
Reason the booking could not be confirmed