List contact properties
/v1/contact-propertiesfor await (const prop of bird.contactProperties.list()) {
console.log(prop.key, prop.type);
}
const page = await bird.contactProperties.list({ limit: 50 }); // page.data, page.next_cursorfor prop in client.contact_properties.list():
print(prop.id, prop.key)for property, err := range client.ContactProperties.List(context.Background(), bird.ContactPropertyListParams{Limit: 50}) {
if err != nil {
log.Fatal(err)
}
fmt.Println(property.Id, property.Key)
}foreach ($bird->contactProperties->list() as $property) {
echo $property->getKey(), ' ', $property->getType(), "\n";
}bird contact-properties listcurl -X GET "https://us1.platform.bird.com/v1/contact-properties" \
-H "Authorization: Bearer $TOKEN" \
--url-query "limit=25"{
"data": [
{
"id": "prp_01krdgeqcxet5s7t44vh8rt9mg",
"type": "string",
"created_at": "2026-05-20T09:14:52Z",
"updated_at": "2026-05-25T16:42:01Z"
}
],
"next_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE0OjAzOjEwWlwiIiwiaSI6IjAxOTJmM2IxLTRjN2UtN2EyYi05ZDYxLThmM2E1YzJlN2I0MCJ9",
"prev_cursor": null,
"refresh_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE2OjQyOjAxWlwiIiwiaSI6IjAxOTJmM2IxLTllMDQtN2NkMy1iODE3LTJhNmY0ZDFjOGUwOSJ9"
}
Returns a paginated list of the workspace's contact properties, newest first. Archived properties are included; check each entry's archived flag.
Query Parameters
limitintegerMaximum number of items to return per page.
starting_afterstringCursor from the next_cursor field of a previous list response. Returns items immediately after the cursor position in the current sort order.
ending_beforestringCursor from the prev_cursor or refresh_cursor field of a previous list response. Returns items immediately before the cursor position in the current sort order. prev_cursor returns the preceding page. refresh_cursor anchors at the first row of that response, which on a newest-first sort is how to fetch the items that have appeared since.
Response Payload
dataPage of contact property objects.
Show child attributes
data.idID of the property, accepted by every operation that takes a property_id.
data.keyThe property key, used as the key in contact data and as the attribute in the bird.contact.<key> broadcast template variable. Lowercase letters, digits, and underscores, starting with a letter. Cannot be changed after creation.
data.typeThe value type every contact must use for a property. Cannot be changed after creation.
datetime values are RFC 3339 timestamps with an explicit offset. Examples include 2024-01-15T09:30:00Z and 2024-01-15T11:30:00+02:00. A bare date or a time with no offset is rejected. The value is normalized to UTC with second precision on write, so 2024-01-15T11:30:00+02:00 is stored and returned as 2024-01-15T09:30:00Z, and any fractional seconds are dropped.
Possible values: string, number, boolean, datetime
data.fallback_valueDefault used when a contact has no value for this property and the template does not supply an inline fallback. A string, number, boolean, or RFC 3339 datetime matching the declared type (strings up to 500 characters), or null when no fallback is set.
data.archivedWhether the property is archived. Archived keys are rejected in new contact writes and when publishing a new template version. Stored contact values are preserved, and previously published versions keep rendering them. Unarchive the property to use its key in new writes and template versions.
data.created_atdata.updated_atnext_cursorCursor for the next page. Pass back as starting_after to advance forward. null when no next page exists.
prev_cursorCursor for the previous page. Pass back as ending_before to step backward. null when no previous page exists.
refresh_cursorRefresh anchor, the first row of this response. Pass back as ending_before to fetch what precedes it in the current sort order. On a newest-first sort those are the items that have appeared since; on any other sort they are the items that sort earlier, so refreshing such a list means re-fetching it instead. Non-null whenever data is non-empty; null only on an empty page. Distinct from prev_cursor.
Related resources
Continue with the documentation, guides and examples for this topic.