Create an entity
curl --request POST \
--url https://api.plane.com/v1/entities \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"country": "<string>",
"address": {},
"dba": "<string>",
"description": "<string>",
"email": "<string>",
"phone": "<string>",
"website": "<string>",
"structure": "<string>",
"formation": {},
"tax_id": {},
"metadata": {}
}
'import requests
url = "https://api.plane.com/v1/entities"
payload = {
"name": "<string>",
"country": "<string>",
"address": {},
"dba": "<string>",
"description": "<string>",
"email": "<string>",
"phone": "<string>",
"website": "<string>",
"structure": "<string>",
"formation": {},
"tax_id": {},
"metadata": {}
}
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({
name: '<string>',
country: '<string>',
address: {},
dba: '<string>',
description: '<string>',
email: '<string>',
phone: '<string>',
website: '<string>',
structure: '<string>',
formation: {},
tax_id: {},
metadata: {}
})
};
fetch('https://api.plane.com/v1/entities', 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/entities",
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([
'name' => '<string>',
'country' => '<string>',
'address' => [
],
'dba' => '<string>',
'description' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'website' => '<string>',
'structure' => '<string>',
'formation' => [
],
'tax_id' => [
],
'metadata' => [
]
]),
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/entities"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"address\": {},\n \"dba\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"website\": \"<string>\",\n \"structure\": \"<string>\",\n \"formation\": {},\n \"tax_id\": {},\n \"metadata\": {}\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/entities")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"address\": {},\n \"dba\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"website\": \"<string>\",\n \"structure\": \"<string>\",\n \"formation\": {},\n \"tax_id\": {},\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/entities")
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 \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"address\": {},\n \"dba\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"website\": \"<string>\",\n \"structure\": \"<string>\",\n \"formation\": {},\n \"tax_id\": {},\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"name": "Acme Labs LLC",
"country": "US",
"structure": "llc",
"email": "labs@acmecorp.com",
"address": {
"line1": "548 Market Street",
"line2": null,
"city": "San Francisco",
"state": "CA",
"postal_code": "94104",
"country": "US"
}
}
{
"id": "ent_kP9r2NqW6mT4s1Bc",
"object": "entity",
"workspace": "wsp_Xb2fPlgnLc",
"name": "Acme Labs LLC",
"country": "US",
"address": {
"line1": "548 Market Street",
"line2": null,
"city": "San Francisco",
"state": "CA",
"postal_code": "94104",
"country": "US"
},
"status": "unverified",
"dba": null,
"description": null,
"email": "labs@acmecorp.com",
"phone": null,
"website": null,
"structure": "llc",
"formation": null,
"metadata": {},
"created": "2026-05-27T12:00:00Z",
"updated": "2026-05-27T12:00:00Z"
}
Entities
Create an entity
Create a new legal entity in your Plane workspace.
POST
/
v1
/
entities
Create an entity
curl --request POST \
--url https://api.plane.com/v1/entities \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"country": "<string>",
"address": {},
"dba": "<string>",
"description": "<string>",
"email": "<string>",
"phone": "<string>",
"website": "<string>",
"structure": "<string>",
"formation": {},
"tax_id": {},
"metadata": {}
}
'import requests
url = "https://api.plane.com/v1/entities"
payload = {
"name": "<string>",
"country": "<string>",
"address": {},
"dba": "<string>",
"description": "<string>",
"email": "<string>",
"phone": "<string>",
"website": "<string>",
"structure": "<string>",
"formation": {},
"tax_id": {},
"metadata": {}
}
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({
name: '<string>',
country: '<string>',
address: {},
dba: '<string>',
description: '<string>',
email: '<string>',
phone: '<string>',
website: '<string>',
structure: '<string>',
formation: {},
tax_id: {},
metadata: {}
})
};
fetch('https://api.plane.com/v1/entities', 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/entities",
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([
'name' => '<string>',
'country' => '<string>',
'address' => [
],
'dba' => '<string>',
'description' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'website' => '<string>',
'structure' => '<string>',
'formation' => [
],
'tax_id' => [
],
'metadata' => [
]
]),
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/entities"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"address\": {},\n \"dba\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"website\": \"<string>\",\n \"structure\": \"<string>\",\n \"formation\": {},\n \"tax_id\": {},\n \"metadata\": {}\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/entities")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"address\": {},\n \"dba\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"website\": \"<string>\",\n \"structure\": \"<string>\",\n \"formation\": {},\n \"tax_id\": {},\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/entities")
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 \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"address\": {},\n \"dba\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"website\": \"<string>\",\n \"structure\": \"<string>\",\n \"formation\": {},\n \"tax_id\": {},\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"name": "Acme Labs LLC",
"country": "US",
"structure": "llc",
"email": "labs@acmecorp.com",
"address": {
"line1": "548 Market Street",
"line2": null,
"city": "San Francisco",
"state": "CA",
"postal_code": "94104",
"country": "US"
}
}
{
"id": "ent_kP9r2NqW6mT4s1Bc",
"object": "entity",
"workspace": "wsp_Xb2fPlgnLc",
"name": "Acme Labs LLC",
"country": "US",
"address": {
"line1": "548 Market Street",
"line2": null,
"city": "San Francisco",
"state": "CA",
"postal_code": "94104",
"country": "US"
},
"status": "unverified",
"dba": null,
"description": null,
"email": "labs@acmecorp.com",
"phone": null,
"website": null,
"structure": "llc",
"formation": null,
"metadata": {},
"created": "2026-05-27T12:00:00Z",
"updated": "2026-05-27T12:00:00Z"
}
Use this endpoint to register an additional legal entity in your workspace,
for example a subsidiary or a second operating company. Only the legal name is
required to start; you can complete the remaining business details later with
Update an entity.
Parameters
string
required
The legal name of the entity as registered with government authorities.
string
Two-letter ISO country code (ISO 3166-1 alpha-2) where the entity is legally domiciled.
object
The primary business address of the entity.
Show child attributes
Show child attributes
string
required
Address line1 (e.g. street or company name).
string
Address line2 (e.g. apartment, suite, unit or building).
string
required
City, district, suburb, town, or village.
string
required
State, county, province, or region.
string
required
ZIP or postal code.
string
required
Two-letter country code (ISO 3166-1 alpha-2).
string
“Doing Business As” name - the trade name used by the entity if different from the legal name.
string
A brief description of the entity’s business activities or purpose.
string
Primary contact email address for the entity.
string
Primary contact phone number for the entity.
string
The entity’s primary website URL.
string
The legal structure of the entity. Allowed values are
corporation, llc, or partnership.object
object
object
Arbitrary key-value data to attach to the entity.
Returns
Returns the created Entity object.{
"name": "Acme Labs LLC",
"country": "US",
"structure": "llc",
"email": "labs@acmecorp.com",
"address": {
"line1": "548 Market Street",
"line2": null,
"city": "San Francisco",
"state": "CA",
"postal_code": "94104",
"country": "US"
}
}
{
"id": "ent_kP9r2NqW6mT4s1Bc",
"object": "entity",
"workspace": "wsp_Xb2fPlgnLc",
"name": "Acme Labs LLC",
"country": "US",
"address": {
"line1": "548 Market Street",
"line2": null,
"city": "San Francisco",
"state": "CA",
"postal_code": "94104",
"country": "US"
},
"status": "unverified",
"dba": null,
"description": null,
"email": "labs@acmecorp.com",
"phone": null,
"website": null,
"structure": "llc",
"formation": null,
"metadata": {},
"created": "2026-05-27T12:00:00Z",
"updated": "2026-05-27T12:00:00Z"
}
Was this page helpful?
⌘I