Create a worker address
curl --request POST \
--url https://api.plane.com/v1/worker-addresses \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"worker": "<string>",
"purpose": "<string>",
"place": "<string>",
"starts": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"country": "<string>"
}
'import requests
url = "https://api.plane.com/v1/worker-addresses"
payload = {
"worker": "<string>",
"purpose": "<string>",
"place": "<string>",
"starts": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"country": "<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>',
place: '<string>',
starts: '<string>',
line1: '<string>',
line2: '<string>',
city: '<string>',
state: '<string>',
postal_code: '<string>',
country: '<string>'
})
};
fetch('https://api.plane.com/v1/worker-addresses', 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-addresses",
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>',
'place' => '<string>',
'starts' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'city' => '<string>',
'state' => '<string>',
'postal_code' => '<string>',
'country' => '<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-addresses"
payload := strings.NewReader("{\n \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"place\": \"<string>\",\n \"starts\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"country\": \"<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-addresses")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"place\": \"<string>\",\n \"starts\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"country\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/worker-addresses")
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 \"place\": \"<string>\",\n \"starts\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"country\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"worker": "wr_8oWZpQ2rL4sk",
"purpose": "residential",
"starts": "2026-07-04",
"line1": "100 Congress Ave",
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US"
}
{
"id": "wra_8oWZpQ2rL4sk",
"object": "worker_address",
"worker": "wr_8oWZpQ2rL4sk",
"purpose": "residential",
"starts": "2026-07-04",
"ends": null,
"current": true,
"place": "plc_8oWZpQ2rL4sk",
"line1": "100 Congress Ave",
"line2": null,
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US",
"created": "2026-07-04T12:00:00Z",
"updated": "2026-07-04T12:00:00Z"
}
Addresses
Create a worker address
Add an address use to a worker.
POST
/
v1
/
worker-addresses
Create a worker address
curl --request POST \
--url https://api.plane.com/v1/worker-addresses \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"worker": "<string>",
"purpose": "<string>",
"place": "<string>",
"starts": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"country": "<string>"
}
'import requests
url = "https://api.plane.com/v1/worker-addresses"
payload = {
"worker": "<string>",
"purpose": "<string>",
"place": "<string>",
"starts": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"country": "<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>',
place: '<string>',
starts: '<string>',
line1: '<string>',
line2: '<string>',
city: '<string>',
state: '<string>',
postal_code: '<string>',
country: '<string>'
})
};
fetch('https://api.plane.com/v1/worker-addresses', 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-addresses",
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>',
'place' => '<string>',
'starts' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'city' => '<string>',
'state' => '<string>',
'postal_code' => '<string>',
'country' => '<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-addresses"
payload := strings.NewReader("{\n \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"place\": \"<string>\",\n \"starts\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"country\": \"<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-addresses")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"worker\": \"<string>\",\n \"purpose\": \"<string>\",\n \"place\": \"<string>\",\n \"starts\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"country\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/worker-addresses")
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 \"place\": \"<string>\",\n \"starts\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"country\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"worker": "wr_8oWZpQ2rL4sk",
"purpose": "residential",
"starts": "2026-07-04",
"line1": "100 Congress Ave",
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US"
}
{
"id": "wra_8oWZpQ2rL4sk",
"object": "worker_address",
"worker": "wr_8oWZpQ2rL4sk",
"purpose": "residential",
"starts": "2026-07-04",
"ends": null,
"current": true,
"place": "plc_8oWZpQ2rL4sk",
"line1": "100 Congress Ave",
"line2": null,
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US",
"created": "2026-07-04T12:00:00Z",
"updated": "2026-07-04T12:00:00Z"
}
Parameters
ID of the worker this address belongs to.
Address purpose. One of
residential, business, or shipping.Existing place ID from one of this worker’s addresses. Use this to make two
purposes point at the same place, such as shipping to the residential address.
Effective start date. Omit when the address was effective before Plane
tracked the worker’s address history.
Address line 1. Provide address fields when you are not using
place.Address line 2.
City.
State, province, or subdivision, when applicable.
Postal code.
Two-letter country code.
Returns
Returns the created Worker address object. When a value-based request exactly matches a place already referenced by this worker’s addresses, Plane reuses that place and returns its ID inplace.
When an address records a successor row for the same purpose, Plane immediately
writes the previous row’s ends as the day before the new row’s starts, even
if the successor starts in the future.
{
"worker": "wr_8oWZpQ2rL4sk",
"purpose": "residential",
"starts": "2026-07-04",
"line1": "100 Congress Ave",
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US"
}
{
"id": "wra_8oWZpQ2rL4sk",
"object": "worker_address",
"worker": "wr_8oWZpQ2rL4sk",
"purpose": "residential",
"starts": "2026-07-04",
"ends": null,
"current": true,
"place": "plc_8oWZpQ2rL4sk",
"line1": "100 Congress Ave",
"line2": null,
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US",
"created": "2026-07-04T12:00:00Z",
"updated": "2026-07-04T12:00:00Z"
}
Was this page helpful?
⌘I