curl --request POST \
--url https://api.duvo.ai/v2/clarity/processes/{id}/interview-invites \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"invitees": [
{
"email": "jsmith@example.com",
"name": "<string>"
}
],
"includeProcessPeople": true,
"message": "<string>"
}
'import requests
url = "https://api.duvo.ai/v2/clarity/processes/{id}/interview-invites"
payload = {
"invitees": [
{
"email": "jsmith@example.com",
"name": "<string>"
}
],
"includeProcessPeople": True,
"message": "<string>"
}
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({
invitees: [{email: 'jsmith@example.com', name: '<string>'}],
includeProcessPeople: true,
message: '<string>'
})
};
fetch('https://api.duvo.ai/v2/clarity/processes/{id}/interview-invites', 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.duvo.ai/v2/clarity/processes/{id}/interview-invites",
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([
'invitees' => [
[
'email' => 'jsmith@example.com',
'name' => '<string>'
]
],
'includeProcessPeople' => true,
'message' => '<string>'
]),
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.duvo.ai/v2/clarity/processes/{id}/interview-invites"
payload := strings.NewReader("{\n \"invitees\": [\n {\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ],\n \"includeProcessPeople\": true,\n \"message\": \"<string>\"\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.duvo.ai/v2/clarity/processes/{id}/interview-invites")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"invitees\": [\n {\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ],\n \"includeProcessPeople\": true,\n \"message\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/clarity/processes/{id}/interview-invites")
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 \"invitees\": [\n {\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ],\n \"includeProcessPeople\": true,\n \"message\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"invites": [
{
"invitationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "jsmith@example.com",
"name": "<string>",
"status": "sent",
"delivery": "guest_link",
"error": "<string>"
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Send Clarity Interview Invites
Invite people to record an interview about this Clarity process, and email each of them. To invite people from the organization chart or landscape, first use the Clarity hierarchy people tools to find their names and email addresses, then pass them as invitees. Set includeProcessPeople to true to also invite everyone already listed as a person on this process. At most 25 unique recipients per call. Each invitee gets a Clarity process invitation, exactly as the Invite dialog creates one; someone already invited is sent their invitation again rather than a second one. Where the team has account-free interview links on, people without a Duvo account get a link that opens the interview directly and expires after 30 days; everyone else gets the normal invitation that asks them to sign in. Revoke a pending invitation with deleteTeamInvite.
curl --request POST \
--url https://api.duvo.ai/v2/clarity/processes/{id}/interview-invites \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"invitees": [
{
"email": "jsmith@example.com",
"name": "<string>"
}
],
"includeProcessPeople": true,
"message": "<string>"
}
'import requests
url = "https://api.duvo.ai/v2/clarity/processes/{id}/interview-invites"
payload = {
"invitees": [
{
"email": "jsmith@example.com",
"name": "<string>"
}
],
"includeProcessPeople": True,
"message": "<string>"
}
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({
invitees: [{email: 'jsmith@example.com', name: '<string>'}],
includeProcessPeople: true,
message: '<string>'
})
};
fetch('https://api.duvo.ai/v2/clarity/processes/{id}/interview-invites', 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.duvo.ai/v2/clarity/processes/{id}/interview-invites",
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([
'invitees' => [
[
'email' => 'jsmith@example.com',
'name' => '<string>'
]
],
'includeProcessPeople' => true,
'message' => '<string>'
]),
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.duvo.ai/v2/clarity/processes/{id}/interview-invites"
payload := strings.NewReader("{\n \"invitees\": [\n {\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ],\n \"includeProcessPeople\": true,\n \"message\": \"<string>\"\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.duvo.ai/v2/clarity/processes/{id}/interview-invites")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"invitees\": [\n {\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ],\n \"includeProcessPeople\": true,\n \"message\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/clarity/processes/{id}/interview-invites")
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 \"invitees\": [\n {\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\"\n }\n ],\n \"includeProcessPeople\": true,\n \"message\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"invites": [
{
"invitationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": "jsmith@example.com",
"name": "<string>",
"status": "sent",
"delivery": "guest_link",
"error": "<string>"
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key authentication. Get your API key from the Duvo dashboard.
Path Parameters
The Clarity process ID.
Body
People found through org-chart or landscape people tools. At most 25 unique recipients per call, counting includeProcessPeople.
25Show child attributes
Show child attributes
Also invite every active process person with an email address. Use this for people already assigned to the process.
Optional plain-text note added to each invitation email, at most 500 characters. Line breaks are collapsed and markup is shown as text.
500Response
Default Response
The result for each unique invitee.
Show child attributes
Show child attributes
Was this page helpful?