curl --request GET \
--url https://api.doozy.live/v1/introductions/{introductionId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.doozy.live/v1/introductions/{introductionId}"
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.doozy.live/v1/introductions/{introductionId}', 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.doozy.live/v1/introductions/{introductionId}",
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.doozy.live/v1/introductions/{introductionId}"
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.doozy.live/v1/introductions/{introductionId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.doozy.live/v1/introductions/{introductionId}")
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{
"object": "introduction",
"id": "intro_abc123",
"status": "active",
"frequency": "weekly",
"intro_message": "**Welcome!** _Meet your new colleague!_",
"destination": {
"type": "slackChannel",
"slackChannelId": "C1234567890",
"excludeUserWithValues": [
{
"key": "team",
"value": "Engineering",
"matchMethod": "equals"
}
],
"includeUserWithValues": [
{
"key": "team",
"value": "Engineering",
"matchMethod": "equals"
}
],
"filters": {
"groups": [
"<string>"
],
"managerStatus": "isManager",
"countries": [
"<string>"
],
"workLocations": [
"<string>"
],
"excludeUsers": [
"<string>"
]
}
},
"team_algorithm": "cross_team",
"seniority_algorithm": "none",
"location_algorithm": "none",
"tenure_algorithm": "none",
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-20T14:00:00.000Z",
"next_match_at": "2024-02-01T09:00:00.000Z",
"next_notify_at": "2024-01-31T09:00:00.000Z",
"meta": {
"permissions": {
"can_view_results": true,
"can_clone": true,
"can_manage": true,
"can_edit": true,
"can_pause": true,
"can_resume": true,
"can_delete": true,
"can_activate": true,
"can_manage_admins": true
}
},
"type": "group",
"group_size": 2,
"time": "10:00",
"timezone": "Europe/London",
"other_destination": {
"type": "slackChannel",
"slackChannelId": "C1234567890",
"excludeUserWithValues": [
{
"key": "team",
"value": "Engineering",
"matchMethod": "equals"
}
],
"includeUserWithValues": [
{
"key": "team",
"value": "Engineering",
"matchMethod": "equals"
}
],
"filters": {
"groups": [
"<string>"
],
"managerStatus": "isManager",
"countries": [
"<string>"
],
"workLocations": [
"<string>"
],
"excludeUsers": [
"<string>"
]
}
},
"notify_channel_of_matches": false,
"upcoming_match_notification": "private_message",
"enable_opt_out": true,
"total_reminders_to_send": 2,
"allowed_meeting_locations": [
"doozy_room"
],
"slack_users_to_exclude": [
"<string>"
],
"auto_schedule": {
"enabled": true,
"window": "next_3_days",
"fixed_time": {
"trigger_days": [
3
],
"time": "<string>",
"timezone": "<string>"
}
},
"next_instance_id": "inst_def456",
"remind_matches_to_meet": true,
"max_matches_per_user": 1,
"rounds_per_instance": 1,
"default_meeting_duration": 30,
"started_at": "2024-01-15T10:30:00.000Z",
"end_at": null,
"instance_count": 5,
"total_match_count": 25,
"opted_out_users": [
{
"user_id": "user_abc123",
"slack_user_id": "U1234567890",
"display_name": "John Doe",
"email": "john@example.com",
"opted_out_at": "2026-07-18T10:30:00.000Z"
}
],
"admin_users": [
"user_abc123",
"user_def456"
],
"feedback_survey": {
"enabled": true,
"question_text": "How was your introduction?",
"question_type": "scale_1_to_10",
"allow_comments": true,
"question_hint": "<string>",
"choices": [],
"allow_multiple": false
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}Get introduction details
Retrieve a specific introduction by ID, including configuration, admin users, opted-out users, and instance/match counts. Only accessible if the user is an admin of the introduction.
curl --request GET \
--url https://api.doozy.live/v1/introductions/{introductionId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.doozy.live/v1/introductions/{introductionId}"
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.doozy.live/v1/introductions/{introductionId}', 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.doozy.live/v1/introductions/{introductionId}",
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.doozy.live/v1/introductions/{introductionId}"
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.doozy.live/v1/introductions/{introductionId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.doozy.live/v1/introductions/{introductionId}")
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{
"object": "introduction",
"id": "intro_abc123",
"status": "active",
"frequency": "weekly",
"intro_message": "**Welcome!** _Meet your new colleague!_",
"destination": {
"type": "slackChannel",
"slackChannelId": "C1234567890",
"excludeUserWithValues": [
{
"key": "team",
"value": "Engineering",
"matchMethod": "equals"
}
],
"includeUserWithValues": [
{
"key": "team",
"value": "Engineering",
"matchMethod": "equals"
}
],
"filters": {
"groups": [
"<string>"
],
"managerStatus": "isManager",
"countries": [
"<string>"
],
"workLocations": [
"<string>"
],
"excludeUsers": [
"<string>"
]
}
},
"team_algorithm": "cross_team",
"seniority_algorithm": "none",
"location_algorithm": "none",
"tenure_algorithm": "none",
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-20T14:00:00.000Z",
"next_match_at": "2024-02-01T09:00:00.000Z",
"next_notify_at": "2024-01-31T09:00:00.000Z",
"meta": {
"permissions": {
"can_view_results": true,
"can_clone": true,
"can_manage": true,
"can_edit": true,
"can_pause": true,
"can_resume": true,
"can_delete": true,
"can_activate": true,
"can_manage_admins": true
}
},
"type": "group",
"group_size": 2,
"time": "10:00",
"timezone": "Europe/London",
"other_destination": {
"type": "slackChannel",
"slackChannelId": "C1234567890",
"excludeUserWithValues": [
{
"key": "team",
"value": "Engineering",
"matchMethod": "equals"
}
],
"includeUserWithValues": [
{
"key": "team",
"value": "Engineering",
"matchMethod": "equals"
}
],
"filters": {
"groups": [
"<string>"
],
"managerStatus": "isManager",
"countries": [
"<string>"
],
"workLocations": [
"<string>"
],
"excludeUsers": [
"<string>"
]
}
},
"notify_channel_of_matches": false,
"upcoming_match_notification": "private_message",
"enable_opt_out": true,
"total_reminders_to_send": 2,
"allowed_meeting_locations": [
"doozy_room"
],
"slack_users_to_exclude": [
"<string>"
],
"auto_schedule": {
"enabled": true,
"window": "next_3_days",
"fixed_time": {
"trigger_days": [
3
],
"time": "<string>",
"timezone": "<string>"
}
},
"next_instance_id": "inst_def456",
"remind_matches_to_meet": true,
"max_matches_per_user": 1,
"rounds_per_instance": 1,
"default_meeting_duration": 30,
"started_at": "2024-01-15T10:30:00.000Z",
"end_at": null,
"instance_count": 5,
"total_match_count": 25,
"opted_out_users": [
{
"user_id": "user_abc123",
"slack_user_id": "U1234567890",
"display_name": "John Doe",
"email": "john@example.com",
"opted_out_at": "2026-07-18T10:30:00.000Z"
}
],
"admin_users": [
"user_abc123",
"user_def456"
],
"feedback_survey": {
"enabled": true,
"question_text": "How was your introduction?",
"question_type": "scale_1_to_10",
"allow_comments": true,
"question_hint": "<string>",
"choices": [],
"allow_multiple": false
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_not_found",
"message": "No such quiz: quiz_abc123",
"param": "id",
"doc_url": "https://docs.doozy.live/api/errors#resource_not_found"
}
}Authorizations
API key for authentication. Generate keys in the Doozy dashboard.
Path Parameters
Introduction ID
1 - 128^[A-Za-z0-9_-]+$"intro_abc123"
Response
Introduction details
- Option 1
- Option 2
Object type identifier
introduction "introduction"
Unique introduction identifier
"intro_abc123"
Current status
active, paused, complete "active"
How often introductions occur
once, weekly, biweekly, triweekly, monthly, monthlyNthWeekday, daily, quarterly, semiannually, annually "weekly"
Custom introduction message (Markdown)
"**Welcome!** _Meet your new colleague!_"
Where introductions are delivered
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
Show child attributes
Show child attributes
Team matching algorithm
cross_team, same_team, random, slack_connect "cross_team"
Seniority matching algorithm
similar_seniority, different_seniority, none "none"
Location matching algorithm
similar_location, different_location, none "none"
Tenure matching algorithm
similar_tenure, different_tenure, none "none"
ISO 8601 creation timestamp
"2024-01-15T10:30:00.000Z"
ISO 8601 last updated timestamp
"2024-01-20T14:00:00.000Z"
ISO 8601 timestamp of the next scheduled match
"2024-02-01T09:00:00.000Z"
ISO 8601 timestamp of the next notification before match
"2024-01-31T09:00:00.000Z"
What the requesting user can do with this introduction (edit, pause, resume, delete, activate, manage admins). Use these to drive UI affordances.
Show child attributes
Show child attributes
Type of introduction - group matches multiple people together
group "group"
Number of people per group
2 <= x <= 42
Time of day for matches in HH:mm format (24-hour)
"10:00"
IANA timezone identifier
"Europe/London"
Alternative destination for participants not in primary destination
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
Show child attributes
Show child attributes
Whether to notify the channel when matches are created
false
How to notify users about upcoming matches
in_channel, private_message, none, null "private_message"
Whether users can opt out of introductions
true
Number of reminders to send
2
Allowed meeting location types
doozy_room, google_meet, teams, zoom, in_person, other Slack user IDs excluded from matching
Auto-scheduling configuration (individual introductions only)
Show child attributes
Show child attributes
ID of the next scheduled instance
"inst_def456"
Whether to send meeting reminders
true
Maximum number of matches per user
1
Number of introduction rounds per instance
1
Default meeting duration in minutes
30
ISO 8601 timestamp when this was first activated
"2024-01-15T10:30:00.000Z"
ISO 8601 timestamp when this will end
null
Total number of instances
5
Total number of matches across all instances
25
Users who have opted out of this introduction
Show child attributes
Show child attributes
Doozy user IDs of members who can edit this introduction and view its results.
["user_abc123", "user_def456"]
Post-meeting feedback configuration
Show child attributes
Show child attributes
Was this page helpful?