curl --request PATCH \
--url https://api.parley.so/v1/accounts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"projectIds": {
"add": [
"<string>"
],
"remove": [
"<string>"
]
},
"fields": {}
}
'import requests
url = "https://api.parley.so/v1/accounts/{id}"
payload = {
"name": "<string>",
"projectIds": {
"add": ["<string>"],
"remove": ["<string>"]
},
"fields": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
projectIds: {add: ['<string>'], remove: ['<string>']},
fields: {}
})
};
fetch('https://api.parley.so/v1/accounts/{id}', 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.parley.so/v1/accounts/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'projectIds' => [
'add' => [
'<string>'
],
'remove' => [
'<string>'
]
],
'fields' => [
]
]),
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.parley.so/v1/accounts/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"projectIds\": {\n \"add\": [\n \"<string>\"\n ],\n \"remove\": [\n \"<string>\"\n ]\n },\n \"fields\": {}\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.parley.so/v1/accounts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"projectIds\": {\n \"add\": [\n \"<string>\"\n ],\n \"remove\": [\n \"<string>\"\n ]\n },\n \"fields\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parley.so/v1/accounts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"projectIds\": {\n \"add\": [\n \"<string>\"\n ],\n \"remove\": [\n \"<string>\"\n ]\n },\n \"fields\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "cmf2x7r1p0000abcd",
"name": "Acme Corp",
"contactCount": 3,
"projectCount": 2,
"createdAt": "2026-09-12T10:00:00.000Z",
"updatedAt": "2026-09-12T10:00:00.000Z",
"fields": {
"Web Address": [
"acme.example"
],
"Overview": null
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "The request is invalid.",
"details": {
"issues": [
{
"path": "<string>",
"message": "<string>"
}
]
}
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid credentials."
}
}{
"error": {
"code": "FORBIDDEN",
"message": "You don't have permission to do this."
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Not found."
}
}{
"error": {
"code": "TOO_MANY_REQUESTS",
"message": "Too many requests."
}
}Update an account
Rename an account (client organization), change the projects it is linked to, or set its custom field values. Omitted fields are left unchanged.
curl --request PATCH \
--url https://api.parley.so/v1/accounts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"projectIds": {
"add": [
"<string>"
],
"remove": [
"<string>"
]
},
"fields": {}
}
'import requests
url = "https://api.parley.so/v1/accounts/{id}"
payload = {
"name": "<string>",
"projectIds": {
"add": ["<string>"],
"remove": ["<string>"]
},
"fields": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
projectIds: {add: ['<string>'], remove: ['<string>']},
fields: {}
})
};
fetch('https://api.parley.so/v1/accounts/{id}', 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.parley.so/v1/accounts/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'projectIds' => [
'add' => [
'<string>'
],
'remove' => [
'<string>'
]
],
'fields' => [
]
]),
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.parley.so/v1/accounts/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"projectIds\": {\n \"add\": [\n \"<string>\"\n ],\n \"remove\": [\n \"<string>\"\n ]\n },\n \"fields\": {}\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.parley.so/v1/accounts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"projectIds\": {\n \"add\": [\n \"<string>\"\n ],\n \"remove\": [\n \"<string>\"\n ]\n },\n \"fields\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parley.so/v1/accounts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"projectIds\": {\n \"add\": [\n \"<string>\"\n ],\n \"remove\": [\n \"<string>\"\n ]\n },\n \"fields\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "cmf2x7r1p0000abcd",
"name": "Acme Corp",
"contactCount": 3,
"projectCount": 2,
"createdAt": "2026-09-12T10:00:00.000Z",
"updatedAt": "2026-09-12T10:00:00.000Z",
"fields": {
"Web Address": [
"acme.example"
],
"Overview": null
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "The request is invalid.",
"details": {
"issues": [
{
"path": "<string>",
"message": "<string>"
}
]
}
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid credentials."
}
}{
"error": {
"code": "FORBIDDEN",
"message": "You don't have permission to do this."
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Not found."
}
}{
"error": {
"code": "TOO_MANY_REQUESTS",
"message": "Too many requests."
}
}Authorizations
A Parley API key.
Path Parameters
The account ID.
1Body
Account name.
1Links to projects to add or remove. Links you don't mention are left unchanged. Each project must be one you can edit.
Show child attributes
Show child attributes
Custom field values to set on the account, keyed by field name or ID. A value replaces the current one, null clears it, and fields you don't mention are left alone. Each value must match its field's type: a string for text, long_text, email, url, single_select (one of the field's options), and user (the id of an active user in the organization); a number; true or false; an ISO 8601 date-time or YYYY-MM-DD date; a list of strings for collection ([] clears it); or { streetAddress, cityTown, state, country } for address. At most 50 fields.
Show child attributes
Show child attributes
Response
OK
The account ID.
1Account name.
1How many contacts belong to the account. List them by filtering contacts by accountId.
0 <= x <= 9007199254740991How many projects you can see are linked directly to the account. Filtering projects by accountId also returns the projects linked through the account's contacts. Linking or unlinking a project doesn't change the account's updatedAt.
0 <= x <= 9007199254740991When the account was created.
When the account itself was last updated. Contacts joining or leaving the account, links to projects, and field value changes do not change it.
Custom field values, keyed by field name, with a key for every field defined for accounts (null when unset). The value's shape follows the field's type.
Show child attributes
Show child attributes
Was this page helpful?
