Accounts
Returns a paginated list of accounts for the organization.
Rate limit: 300 requests per minute
Authorization: Bearer
The cursor to use for pagination.
The number of accounts to fetch. Defaults to 100. Must be greater than 0 and less than 1000.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
GET /accounts HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"associated_account_ids": [
"text"
],
"channels": [
{
"channel_id": "text",
"channel_name": "text",
"channel_url": "text",
"is_internal": true,
"is_primary": true,
"mirror_to": {
"channel_id": "text",
"source": "slack"
},
"source": "slack"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"crm_settings": {
"details": [
{
"id": "text",
"source": "text"
}
]
},
"custom_fields": {
"plan": {
"value": "enterprise"
}
},
"domain": "text",
"domains": [
"text"
],
"external_ids": [
{
"external_id": "text",
"label": "text"
}
],
"id": "text",
"is_disabled": true,
"latest_customer_activity_time": "text",
"latest_vendor_activity_time": "text",
"logo_url": "text",
"name": "text",
"owner": {
"email": "text",
"id": "text"
},
"parent_account_id": "text",
"primary_domain": "text",
"subaccount_ids": [
"text"
],
"tags": [
"text"
],
"type": "customer",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"pagination": {
"cursor": "text",
"has_next_page": true
},
"request_id": "text"
}Creates a new account with the specified name and optional metadata.
Rate limit: 300 requests per minute
Authorization: Bearer
The type of the account. Must be one of "customer", "internal", "community", or "partner". Defaults to "customer" if not specified.
customerExample: customerPossible values: Deprecated. Please use Domains and PrimaryDomain instead.
The domains of the account, without any leading scheme, for example stripe.com. Must specify one domain as primary.
The logo URL of the account. Must be a square .png, .jpg or .jpeg.
The name of the account.
The ID of the owner of the account.
Must be in the list of domains. If there are any domains, there must be exactly one primary domain.
An array of account IDs to be added as subaccounts to this account. For normal accounts, these represent subaccounts. For partner accounts, these represent associated accounts.
An array of strings to use as tags on this account. If provided, the accounts tags will be updated to the given tags.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
POST /accounts HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 483
{
"account_type": "customer",
"channels": [
{
"channel_id": "text",
"channel_name": "text",
"channel_url": "text",
"is_internal": true,
"is_primary": true,
"mirror_to": {
"channel_id": "text",
"source": "slack"
},
"source": "slack"
}
],
"custom_fields": [
{
"slug": "text",
"value": "text",
"values": [
"text"
]
}
],
"domain": "text",
"domains": [
"text"
],
"external_ids": [
{
"external_id": "text",
"label": "text"
}
],
"logo_url": "text",
"name": "text",
"owner_id": "text",
"primary_domain": "text",
"subaccount_ids": [
"text"
],
"tags": [
"text"
]
}{
"data": {
"associated_account_ids": [
"text"
],
"channels": [
{
"channel_id": "text",
"channel_name": "text",
"channel_url": "text",
"is_internal": true,
"is_primary": true,
"mirror_to": {
"channel_id": "text",
"source": "slack"
},
"source": "slack"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"crm_settings": {
"details": [
{
"id": "text",
"source": "text"
}
]
},
"custom_fields": {
"plan": {
"value": "enterprise"
}
},
"domain": "text",
"domains": [
"text"
],
"external_ids": [
{
"external_id": "text",
"label": "text"
}
],
"id": "text",
"is_disabled": true,
"latest_customer_activity_time": "text",
"latest_vendor_activity_time": "text",
"logo_url": "text",
"name": "text",
"owner": {
"email": "text",
"id": "text"
},
"parent_account_id": "text",
"primary_domain": "text",
"subaccount_ids": [
"text"
],
"tags": [
"text"
],
"type": "customer",
"updated_at": "2026-01-01T00:00:00.000Z"
},
"request_id": "text"
}Updates multiple accounts in a single request. Only provided fields are modified.
Rate limit: 120 requests per minute
Authorization: Bearer
The account IDs to update. The number of accounts to update must be between 1 and 100.
The type of the account. Can only be changed to "customer" or "partner".
customerPossible values: Whether the accounts are disabled.
The ID of the new owner. If empty string is passed in, the owner will be removed.
An array of tags to be updated on the accounts.
The mode for applying tags. Valid values: "append_only", "remove_only", "replace". Defaults to "replace".
replaceExample: replacePossible values: The request ID for tracking.
Whether the update was successfully initiated.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
PATCH /accounts HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 198
{
"account_ids": [
"text"
],
"account_type": "customer",
"custom_fields": [
{
"slug": "text",
"value": "text",
"values": [
"text"
]
}
],
"is_disabled": true,
"owner_id": "text",
"tags": [
"text"
],
"tags_apply_mode": "replace"
}{
"request_id": "text",
"success": true
}Returns a single account by ID or external ID.
Rate limit: 300 requests per minute
Authorization: Bearer
The ID or external ID of the account to fetch.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
GET /accounts/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"associated_account_ids": [
"text"
],
"channels": [
{
"channel_id": "text",
"channel_name": "text",
"channel_url": "text",
"is_internal": true,
"is_primary": true,
"mirror_to": {
"channel_id": "text",
"source": "slack"
},
"source": "slack"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"crm_settings": {
"details": [
{
"id": "text",
"source": "text"
}
]
},
"custom_fields": {
"plan": {
"value": "enterprise"
}
},
"domain": "text",
"domains": [
"text"
],
"external_ids": [
{
"external_id": "text",
"label": "text"
}
],
"id": "text",
"is_disabled": true,
"latest_customer_activity_time": "text",
"latest_vendor_activity_time": "text",
"logo_url": "text",
"name": "text",
"owner": {
"email": "text",
"id": "text"
},
"parent_account_id": "text",
"primary_domain": "text",
"subaccount_ids": [
"text"
],
"tags": [
"text"
],
"type": "customer",
"updated_at": "2026-01-01T00:00:00.000Z"
},
"request_id": "text"
}Updates an existing account by ID or external ID. Only provided fields are modified.
Rate limit: 300 requests per minute
Authorization: Bearer
The ID or external ID of the account to update.
The type of the account. Can only be changed to "customer" or "partner".
customerPossible values: Domains of the account. Replaces the account's domains. Must specify one domain as primary.
Whether the account is disabled.
Logo URL of the account.
The name of the account.
The ID of the owner of the account. If empty string is passed in, the owner will be removed.
Must be in the list of domains. If there are any domains, there must be exactly one primary domain.
An array of account IDs to set as this account's subaccounts. If provided, the account's subaccounts become exactly this list; accounts you leave out are detached.
An array of strings to use as tags on this account. If provided, the accounts tags will be updated to the given tags.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
PATCH /accounts/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 486
{
"account_type": "customer",
"channels": [
{
"channel_id": "text",
"channel_name": "text",
"channel_url": "text",
"is_internal": true,
"is_primary": true,
"mirror_to": {
"channel_id": "text",
"source": "slack"
},
"source": "slack"
}
],
"custom_fields": [
{
"slug": "text",
"value": "text",
"values": [
"text"
]
}
],
"domains": [
"text"
],
"external_ids": [
{
"external_id": "text",
"label": "text"
}
],
"is_disabled": true,
"logo_url": "text",
"name": "text",
"owner_id": "text",
"primary_domain": "text",
"subaccount_ids": [
"text"
],
"tags": [
"text"
]
}{
"data": {
"associated_account_ids": [
"text"
],
"channels": [
{
"channel_id": "text",
"channel_name": "text",
"channel_url": "text",
"is_internal": true,
"is_primary": true,
"mirror_to": {
"channel_id": "text",
"source": "slack"
},
"source": "slack"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"crm_settings": {
"details": [
{
"id": "text",
"source": "text"
}
]
},
"custom_fields": {
"plan": {
"value": "enterprise"
}
},
"domain": "text",
"domains": [
"text"
],
"external_ids": [
{
"external_id": "text",
"label": "text"
}
],
"id": "text",
"is_disabled": true,
"latest_customer_activity_time": "text",
"latest_vendor_activity_time": "text",
"logo_url": "text",
"name": "text",
"owner": {
"email": "text",
"id": "text"
},
"parent_account_id": "text",
"primary_domain": "text",
"subaccount_ids": [
"text"
],
"tags": [
"text"
],
"type": "customer",
"updated_at": "2026-01-01T00:00:00.000Z"
},
"request_id": "text"
}Permanently deletes an account by ID or external ID.
Rate limit: 30 requests per minute
Authorization: Bearer
The ID or external ID of the account to delete.
The request ID for tracking.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
DELETE /accounts/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"request_id": "text"
}Optionally pass search_text for fuzzy matching. Results are intersected with any provided filter.
Filterable fields and their allowed operators:
id
equals, in, not_in
domains
contains, does_not_contain, in, not_in
tags
contains, does_not_contain, in, not_in
name
equals, in, not_in, string_contains
external_ids
equals, in, not_in, is_set, is_unset
owner_id
equals, in, not_in, is_set, is_unset
For custom fields, pass the field slug as field.
Rate limit: 120 requests per minute
Authorization: Bearer
The cursor to use for pagination.
The number of accounts to fetch. Defaults to 100. Must be between 1 and 1000.
Fuzzy text search. Results are intersected with any provided filter.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
POST /accounts/search HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 194
{
"cursor": "text",
"filter": {
"field": "text",
"operator": "equals",
"subfilters": [
{
"field": "state",
"operator": "equals",
"value": "new"
}
],
"value": "text",
"values": [
"text"
]
},
"limit": 1,
"search_text": "text"
}{
"data": [
{
"associated_account_ids": [
"text"
],
"channels": [
{
"channel_id": "text",
"channel_name": "text",
"channel_url": "text",
"is_internal": true,
"is_primary": true,
"mirror_to": {
"channel_id": "text",
"source": "slack"
},
"source": "slack"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"crm_settings": {
"details": [
{
"id": "text",
"source": "text"
}
]
},
"custom_fields": {
"plan": {
"value": "enterprise"
}
},
"domain": "text",
"domains": [
"text"
],
"external_ids": [
{
"external_id": "text",
"label": "text"
}
],
"id": "text",
"is_disabled": true,
"latest_customer_activity_time": "text",
"latest_vendor_activity_time": "text",
"logo_url": "text",
"name": "text",
"owner": {
"email": "text",
"id": "text"
},
"parent_account_id": "text",
"primary_domain": "text",
"subaccount_ids": [
"text"
],
"tags": [
"text"
],
"type": "customer",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"pagination": {
"cursor": "text",
"has_next_page": true
},
"request_id": "text"
}Merges one or more accounts into a surviving account. Issues, contacts, opportunities, domains, channels, external IDs, and other associated data are transferred to the surviving account. Tags and custom field values of the merged accounts are not transferred. The merged accounts are permanently deleted. This cannot be undone. Accounts are merged sequentially, each in its own transaction; if a merge fails partway through, accounts already merged are not restored.
Rate limit: 30 requests per minute
Authorization: Bearer
The IDs of the accounts to merge into the surviving account. These accounts are permanently deleted after their data is transferred. The number of accounts to merge must be between 1 and 100.
The ID of the account that will survive the merge and receive the merged data.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
POST /accounts/merge HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61
{
"merge_account_ids": [
"text"
],
"merge_into_account_id": "text"
}{
"data": {
"associated_account_ids": [
"text"
],
"channels": [
{
"channel_id": "text",
"channel_name": "text",
"channel_url": "text",
"is_internal": true,
"is_primary": true,
"mirror_to": {
"channel_id": "text",
"source": "slack"
},
"source": "slack"
}
],
"created_at": "2026-01-01T00:00:00.000Z",
"crm_settings": {
"details": [
{
"id": "text",
"source": "text"
}
]
},
"custom_fields": {
"plan": {
"value": "enterprise"
}
},
"domain": "text",
"domains": [
"text"
],
"external_ids": [
{
"external_id": "text",
"label": "text"
}
],
"id": "text",
"is_disabled": true,
"latest_customer_activity_time": "text",
"latest_vendor_activity_time": "text",
"logo_url": "text",
"name": "text",
"owner": {
"email": "text",
"id": "text"
},
"parent_account_id": "text",
"primary_domain": "text",
"subaccount_ids": [
"text"
],
"tags": [
"text"
],
"type": "customer",
"updated_at": "2026-01-01T00:00:00.000Z"
},
"request_id": "text"
}Returns the parent-child and partner-client relationships where the account is the child or client.
Rate limit: 300 requests per minute
Authorization: Bearer
The ID of the child or client account whose relationships should be returned.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
GET /accounts/{account_id}/relationships HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"child_account_id": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"id": "text",
"parent_account_id": "text",
"related_object_id": "text",
"relationship_type": "text",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"request_id": "text"
}Creates a parent or partner relationship for the account in the URL.
Rate limit: 120 requests per minute
Authorization: Bearer
The ID of the child or client account.
The ID of the related parent or partner account.
The relationship type. Must be "parent_account" or "partner_account".
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
POST /accounts/{account_id}/relationship HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55
{
"related_object_id": "text",
"relationship_type": "text"
}{
"data": {
"child_account_id": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"id": "text",
"parent_account_id": "text",
"related_object_id": "text",
"relationship_type": "text",
"updated_at": "2026-01-01T00:00:00.000Z"
},
"request_id": "text"
}Deletes an account relationship by ID.
Rate limit: 120 requests per minute
Authorization: Bearer
The ID of the child or client account.
The ID of the account relationship to delete.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
DELETE /accounts/{account_id}/relationships/{relationship_id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"child_account_id": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"id": "text",
"parent_account_id": "text",
"related_object_id": "text",
"relationship_type": "text",
"updated_at": "2026-01-01T00:00:00.000Z"
},
"request_id": "text"
}Append a note to an account notebook block
Creates a note in a specific Notes block in an account notebook.
Rate limit: 120 requests per minute
Authorization: Bearer
The ID or external ID of the account.
The ID of the Notes block, copied from the notebook UI.
The note body as HTML.
An optional title for the note.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
POST /accounts/{account_id}/notebook-blocks/{block_id}/notes HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"content_html": "text",
"title": "text"
}{
"data": {
"account_id": "text",
"block_id": "text",
"content_html": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"created_by_user_id": "text",
"id": "text",
"title": "text",
"updated_at": "2026-01-01T00:00:00.000Z"
},
"request_id": "text"
}Returns notes from a specific Notes block in an account notebook.
Rate limit: 300 requests per minute
Authorization: Bearer
The ID or external ID of the account.
The ID of the Notes block, copied from the notebook UI.
The cursor to use for pagination.
The number of notes to fetch. Defaults to 20. Must be greater than 0 and less than or equal to 20.
The request ID for tracking.
The request was invalid or could not be completed.
The request could not be authenticated for this API.
The authenticated caller or organization is not allowed to access this endpoint or operation.
The request exceeded the applicable rate limit.
An unexpected internal error occurred.
GET /accounts/{account_id}/notebook-blocks/{block_id}/notes HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"account_id": "text",
"block_id": "text",
"content_html": "text",
"created_at": "2026-01-01T00:00:00.000Z",
"created_by_user_id": "text",
"id": "text",
"title": "text",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"pagination": {
"cursor": "text",
"has_next_page": true
},
"request_id": "text"
}Last updated
Was this helpful?

