Create a worker contact
curl --request POST \
--url https://api.plane.com/v1/worker-contacts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"worker": "<string>",
"purpose": "<string>",
"name": {},
"relationship": "<string>",
"phones": [
{}
],
"emails": [
{}
],
"address": {},
"priority": 123,
"status": "<string>"
}
'import requests
url = "https://api.plane.com/v1/worker-contacts"
payload = {
"worker": "<string>",
"purpose": "<string>",
"name": {},
"relationship": "<string>",
"phones": [{}],
"emails": [{}],
"address": {},
"priority": 123,
"status": "<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({
worker: '<string>',
purpose: '<string>',
name: {},
relationship: '<string>',
phones: [{}],
emails: [{}],
address: {},
priority: 123,
status: '<string>'
})
};
fetch('https://api.plane.com/v1/worker-contacts', 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.plane.com/v1/worker-contacts",
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([
'worker' => '<string>',
'purpose' => '<string>',
'name' => [
],
'relationship' => '<string>',
'phones' => [
[
]
],
'emails' => [
[
]
],
'address' => [
],
'priority' => 123,
'status' => '<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.plane.com/v1/worker-contacts"
payload := strings.NewReader("{\n \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"name\": {},\n \"relationship\": \"<string>\",\n \"phones\": [\n {}\n ],\n \"emails\": [\n {}\n ],\n \"address\": {},\n \"priority\": 123,\n \"status\": \"<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.plane.com/v1/worker-contacts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"name\": {},\n \"relationship\": \"<string>\",\n \"phones\": [\n {}\n ],\n \"emails\": [\n {}\n ],\n \"address\": {},\n \"priority\": 123,\n \"status\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/worker-contacts")
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 \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"name\": {},\n \"relationship\": \"<string>\",\n \"phones\": [\n {}\n ],\n \"emails\": [\n {}\n ],\n \"address\": {},\n \"priority\": 123,\n \"status\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"worker": "wrkr_8oWZpQ2rL4sk",
"purpose": "emergency",
"name": { "full": "Amara Okafor", "display": "Amara Okafor" },
"relationship": "spouse",
"phones": [{ "type": "mobile", "value": "+14155550123", "primary": true }],
"emails": [{ "type": "personal", "value": "amara@example.com", "primary": true }],
"priority": 1
}
{
"id": "wcon_8oWZpQ2rL4sk",
"object": "worker_contact",
"worker": "wrkr_8oWZpQ2rL4sk",
"purpose": "emergency",
"name": { "full": "Amara Okafor", "display": "Amara Okafor" },
"relationship": "spouse",
"phones": [{ "type": "mobile", "value": "+14155550123", "extension": null, "primary": true }],
"emails": [{ "type": "personal", "value": "amara@example.com", "primary": true }],
"address": null,
"priority": 1,
"status": "active",
"created": "2026-06-21T12:00:00Z",
"updated": "2026-06-21T12:00:00Z"
}
Contacts
Create a worker contact
Add a contact to a worker.
POST
/
v1
/
worker-contacts
Create a worker contact
curl --request POST \
--url https://api.plane.com/v1/worker-contacts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"worker": "<string>",
"purpose": "<string>",
"name": {},
"relationship": "<string>",
"phones": [
{}
],
"emails": [
{}
],
"address": {},
"priority": 123,
"status": "<string>"
}
'import requests
url = "https://api.plane.com/v1/worker-contacts"
payload = {
"worker": "<string>",
"purpose": "<string>",
"name": {},
"relationship": "<string>",
"phones": [{}],
"emails": [{}],
"address": {},
"priority": 123,
"status": "<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({
worker: '<string>',
purpose: '<string>',
name: {},
relationship: '<string>',
phones: [{}],
emails: [{}],
address: {},
priority: 123,
status: '<string>'
})
};
fetch('https://api.plane.com/v1/worker-contacts', 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.plane.com/v1/worker-contacts",
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([
'worker' => '<string>',
'purpose' => '<string>',
'name' => [
],
'relationship' => '<string>',
'phones' => [
[
]
],
'emails' => [
[
]
],
'address' => [
],
'priority' => 123,
'status' => '<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.plane.com/v1/worker-contacts"
payload := strings.NewReader("{\n \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"name\": {},\n \"relationship\": \"<string>\",\n \"phones\": [\n {}\n ],\n \"emails\": [\n {}\n ],\n \"address\": {},\n \"priority\": 123,\n \"status\": \"<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.plane.com/v1/worker-contacts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"name\": {},\n \"relationship\": \"<string>\",\n \"phones\": [\n {}\n ],\n \"emails\": [\n {}\n ],\n \"address\": {},\n \"priority\": 123,\n \"status\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/worker-contacts")
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 \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"name\": {},\n \"relationship\": \"<string>\",\n \"phones\": [\n {}\n ],\n \"emails\": [\n {}\n ],\n \"address\": {},\n \"priority\": 123,\n \"status\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"worker": "wrkr_8oWZpQ2rL4sk",
"purpose": "emergency",
"name": { "full": "Amara Okafor", "display": "Amara Okafor" },
"relationship": "spouse",
"phones": [{ "type": "mobile", "value": "+14155550123", "primary": true }],
"emails": [{ "type": "personal", "value": "amara@example.com", "primary": true }],
"priority": 1
}
{
"id": "wcon_8oWZpQ2rL4sk",
"object": "worker_contact",
"worker": "wrkr_8oWZpQ2rL4sk",
"purpose": "emergency",
"name": { "full": "Amara Okafor", "display": "Amara Okafor" },
"relationship": "spouse",
"phones": [{ "type": "mobile", "value": "+14155550123", "extension": null, "primary": true }],
"emails": [{ "type": "personal", "value": "amara@example.com", "primary": true }],
"address": null,
"priority": 1,
"status": "active",
"created": "2026-06-21T12:00:00Z",
"updated": "2026-06-21T12:00:00Z"
}
Parameters
string
required
ID of the worker this contact belongs to.
string
required
Contact purpose. Currently
emergency.object
required
The contact’s name. Same shape as a worker’s name (e.g.
first, last,
full, display).string
required
Free-text relationship to the worker.
array
Phone numbers for this contact. Each entry requires
type and value, and
may include extension and primary. Phone types are mobile, home,
work, or other.array
Email addresses for this contact. Each entry requires
type and value, and
may include primary. Email types are personal, work, or other.object
Optional mailing address for this contact.
integer
Contact priority within the purpose. Required for emergency contacts.
string
Contact status. One of
active or inactive. Defaults to active.Returns
Returns the created Worker contact object.{
"worker": "wrkr_8oWZpQ2rL4sk",
"purpose": "emergency",
"name": { "full": "Amara Okafor", "display": "Amara Okafor" },
"relationship": "spouse",
"phones": [{ "type": "mobile", "value": "+14155550123", "primary": true }],
"emails": [{ "type": "personal", "value": "amara@example.com", "primary": true }],
"priority": 1
}
{
"id": "wcon_8oWZpQ2rL4sk",
"object": "worker_contact",
"worker": "wrkr_8oWZpQ2rL4sk",
"purpose": "emergency",
"name": { "full": "Amara Okafor", "display": "Amara Okafor" },
"relationship": "spouse",
"phones": [{ "type": "mobile", "value": "+14155550123", "extension": null, "primary": true }],
"emails": [{ "type": "personal", "value": "amara@example.com", "primary": true }],
"address": null,
"priority": 1,
"status": "active",
"created": "2026-06-21T12:00:00Z",
"updated": "2026-06-21T12:00:00Z"
}
Was this page helpful?
⌘I