List the account's campaigns. Requires campaigns:read.
| page | integer (Page) >= 1 Default: 1 1-based page number. |
| size | integer (Size) [ 1 .. 100 ] Default: 25 Items per page (max 100). |
{- "items": [
- {
- "date_created": "2019-08-24T14:15:22Z",
- "date_end": "2019-08-24T14:15:22Z",
- "date_start": "2019-08-24T14:15:22Z",
- "description": "string",
- "id": "string",
- "is_enabled": true,
- "kind": "string",
- "name": "string",
- "project_id": "string",
- "state": "string"
}
], - "page": 0,
- "size": 0,
- "total": 0
}Fetch one campaign by id, own account only. Requires campaigns:read.
| campaign_id required | string (Campaign Id) |
{- "date_created": "2019-08-24T14:15:22Z",
- "date_end": "2019-08-24T14:15:22Z",
- "date_start": "2019-08-24T14:15:22Z",
- "description": "string",
- "id": "string",
- "is_enabled": true,
- "kind": "string",
- "name": "string",
- "project_id": "string",
- "state": "string"
}List the account's custom fields. Requires custom_fields:read.
Collection (string) or Collection (null) (Collection) Filter to fields for one entity type. | |
| page | integer (Page) >= 1 Default: 1 1-based page number. |
| size | integer (Size) [ 1 .. 100 ] Default: 25 Items per page (max 100). |
{- "items": [
- {
- "collection": "Person",
- "data_type": "str",
- "description": "string",
- "form_type": "text",
- "id": "string",
- "is_default": true,
- "is_read_only": true,
- "key": "string",
- "label": "string"
}
], - "page": 0,
- "size": 0,
- "total": 0
}Create a custom field for the caller's account. Requires custom_fields:write.
Allocates the storage key, creates the Elasticsearch mapping so values can be
indexed, then persists the definition. The owning account comes from the API
key; key+collection must be unique (409) and the account-wide field limit
is enforced (422).
| collection required | string (Collection) Enum: "Person" "Breadcrumb" "Partner" |
| data_type required | string (Data Type) Enum: "str" "int" "float" "bool" "list" "date" "money" "unicode" |
Description (string) or Description (null) (Description) | |
| form_type | string (Form Type) Default: "text" Enum: "text" "number" "textarea" "email" "url" "image" |
| key required | string (Key) [ 1 .. 255 ] characters |
Label (string) or Label (null) (Label) |
{- "collection": "Person",
- "data_type": "str",
- "description": "string",
- "form_type": "text",
- "key": "string",
- "label": "string"
}{- "collection": "Person",
- "data_type": "str",
- "description": "string",
- "form_type": "text",
- "id": "string",
- "is_default": true,
- "is_read_only": true,
- "key": "string",
- "label": "string"
}Archive a custom field (soft delete). Requires custom_fields:write.
Soft delete preserves already-stored values and the Elasticsearch mapping (mappings are only reclaimed on reindex). Integration-managed (read-only) fields cannot be deleted via the API (403).
| field_id required | string (Field Id) |
{- "detail": "string",
- "status": 0,
- "title": "string",
- "type": "about:blank"
}Fetch one custom field by id, own account only. Requires custom_fields:read.
| field_id required | string (Field Id) |
{- "collection": "Person",
- "data_type": "str",
- "description": "string",
- "form_type": "text",
- "id": "string",
- "is_default": true,
- "is_read_only": true,
- "key": "string",
- "label": "string"
}Update a custom field's display attributes. Requires custom_fields:write.
Integration-managed (read-only) fields cannot be edited via the API (403).
| field_id required | string (Field Id) |
Description (string) or Description (null) (Description) | |
Form Type (string) or Form Type (null) (Form Type) | |
Label (string) or Label (null) (Label) |
{- "description": "string",
- "form_type": "text",
- "label": "string"
}{- "collection": "Person",
- "data_type": "str",
- "description": "string",
- "form_type": "text",
- "id": "string",
- "is_default": true,
- "is_read_only": true,
- "key": "string",
- "label": "string"
}Introspect the calling API key: its account, scopes, metadata, and limits.
Requires only a valid key (any scope) and does not count against the key's rate limit. Metadata is read fresh from storage by the key's id; rate-limit counters reflect the bucket as of this request.
{- "account_id": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "key_id": "string",
- "last_four": "string",
- "last_used_at": "2019-08-24T14:15:22Z",
- "prefix": "string",
- "rate_limit": {
- "enabled": true,
- "limit": 0,
- "remaining": 0,
- "reset_at": "2019-08-24T14:15:22Z",
- "reset_seconds": 0,
- "used": 0
}, - "revoked": false,
- "scopes": [
- "string"
], - "service_name": "string"
}List persons last seen since updated_since. Requires persons:read.
updated_since maps to the person's last-seen time and is capped at 30
days ago for performance (older values are rejected). Optional filters:
external_id (exact match) and tag_ids (repeatable; AND — the person
must hold every listed tag). Inner breadcrumbs are always excluded; results
are ordered by last-seen ascending for stable paging. Custom-field values
are translated to public keys.
| updated_since required | string <date-time> (Updated Since) Return persons last seen at/after this time (max 30 days ago). |
External Id (string) or External Id (null) (External Id) Filter to the person with this exact external id. | |
Array of Tag Ids (strings) or Tag Ids (null) (Tag Ids) Filter to persons holding ALL of these tag ids (AND). | |
| page | integer (Page) >= 1 Default: 1 1-based page number. |
| size | integer (Size) [ 1 .. 100 ] Default: 25 Items per page (max 100). |
{- "items": [
- {
- "custom_fields": { },
- "date_created": "2019-08-24T14:15:22Z",
- "date_last_seen": "2019-08-24T14:15:22Z",
- "email": "string",
- "external_id": "string",
- "first_name": "string",
- "id": "string",
- "last_name": "string",
- "phone": "string",
- "tag_ids": [
- "string"
]
}
], - "page": 0,
- "size": 0,
- "total": 0
}Upsert a person, matched by stable key. Requires persons:write.
Matches an existing person by external_id → email → f_id (or creates one),
then applies the provided attributes. A stable external_id makes this
idempotent — re-delivery matches the same person rather than duplicating it.
Email (string) or Email (null) (Email) | |
External Id (string) or External Id (null) (External Id) | |
F Id (string) or F Id (null) (F Id) | |
First Name (string) or First Name (null) (First Name) | |
Last Name (string) or Last Name (null) (Last Name) | |
Phone (string) or Phone (null) (Phone) |
{- "email": "string",
- "external_id": "string",
- "f_id": "string",
- "first_name": "string",
- "last_name": "string",
- "phone": "string"
}{- "custom_fields": { },
- "date_created": "2019-08-24T14:15:22Z",
- "date_last_seen": "2019-08-24T14:15:22Z",
- "email": "string",
- "external_id": "string",
- "first_name": "string",
- "id": "string",
- "last_name": "string",
- "phone": "string",
- "tag_ids": [
- "string"
]
}Fetch a person by id, scoped to the caller's account. Requires persons:read.
Inner breadcrumbs are always excluded from the fetch (they are large and served by the breadcrumbs endpoint). Custom-field values are translated to public keys.
| person_id required | string (Person Id) |
{- "custom_fields": { },
- "date_created": "2019-08-24T14:15:22Z",
- "date_last_seen": "2019-08-24T14:15:22Z",
- "email": "string",
- "external_id": "string",
- "first_name": "string",
- "id": "string",
- "last_name": "string",
- "phone": "string",
- "tag_ids": [
- "string"
]
}Update a person's attributes by id, own account only. Requires persons:write.
| person_id required | string (Person Id) |
Email (string) or Email (null) (Email) | |
First Name (string) or First Name (null) (First Name) | |
Last Name (string) or Last Name (null) (Last Name) | |
Phone (string) or Phone (null) (Phone) |
{- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "phone": "string"
}{- "custom_fields": { },
- "date_created": "2019-08-24T14:15:22Z",
- "date_last_seen": "2019-08-24T14:15:22Z",
- "email": "string",
- "external_id": "string",
- "first_name": "string",
- "id": "string",
- "last_name": "string",
- "phone": "string",
- "tag_ids": [
- "string"
]
}List the account's projects. Requires projects:read.
| page | integer (Page) >= 1 Default: 1 1-based page number. |
| size | integer (Size) [ 1 .. 100 ] Default: 25 Items per page (max 100). |
{- "items": [
- {
- "date_created": "2019-08-24T14:15:22Z",
- "date_end": "2019-08-24T14:15:22Z",
- "date_start": "2019-08-24T14:15:22Z",
- "id": "string",
- "location": "string",
- "name": "string",
- "registration_url": "string",
- "site_url": "string"
}
], - "page": 0,
- "size": 0,
- "total": 0
}Fetch one project by id, own account only. Requires projects:read.
| project_id required | string (Project Id) |
{- "date_created": "2019-08-24T14:15:22Z",
- "date_end": "2019-08-24T14:15:22Z",
- "date_start": "2019-08-24T14:15:22Z",
- "id": "string",
- "location": "string",
- "name": "string",
- "registration_url": "string",
- "site_url": "string"
}