import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
});
async function main() {
const response = await client.properties.listProperties();
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/properties' \
-H 'Authorization: Bearer YOUR_API_KEY'[
{
"property_id": "property-aaaaaaaaaaaa",
"property_name": "Workspace",
"type": "ticket",
"kind": "dropdown",
"mandatory": false,
"section_id": "00000000-0000-0000-0000-000000000000",
"section_name": "Issue Details",
"options": [
{
"id": "1755859200000",
"label": "Example Corp"
},
{
"id": "1755859200001",
"label": "Globex"
}
],
"created_at": "2026-01-15T09:30:00.000Z"
}
]{
"code": "UNAUTHORIZED_ERROR",
"message": "Invalid bearer auth token",
"status": 401
}{
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"status": 422,
"fields": {
"body.chat_id": {
"message": "chat_id is required"
}
}
}{
"code": "RATE_LIMIT_ERROR",
"message": "You can only make 100 requests per second",
"status": 429
}{
"code": "UNKNOWN_ERROR",
"message": "Internal server error",
"status": 500
}Get All Custom Properties
Returns every custom property (chat and ticket), including dropdown and picklist options. Filter with the type query param.
import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
});
async function main() {
const response = await client.properties.listProperties();
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/properties' \
-H 'Authorization: Bearer YOUR_API_KEY'[
{
"property_id": "property-aaaaaaaaaaaa",
"property_name": "Workspace",
"type": "ticket",
"kind": "dropdown",
"mandatory": false,
"section_id": "00000000-0000-0000-0000-000000000000",
"section_name": "Issue Details",
"options": [
{
"id": "1755859200000",
"label": "Example Corp"
},
{
"id": "1755859200001",
"label": "Globex"
}
],
"created_at": "2026-01-15T09:30:00.000Z"
}
]{
"code": "UNAUTHORIZED_ERROR",
"message": "Invalid bearer auth token",
"status": 401
}{
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"status": 422,
"fields": {
"body.chat_id": {
"message": "chat_id is required"
}
}
}{
"code": "RATE_LIMIT_ERROR",
"message": "You can only make 100 requests per second",
"status": 429
}{
"code": "UNKNOWN_ERROR",
"message": "Internal server error",
"status": 500
}Authorizations
Your Periskope API token, sent as Authorization: Bearer <token>. Generate one from the Periskope dashboard under Settings → API & Webhooks. API access requires an active Pro or Enterprise plan.
Query Parameters
One or more value kinds, comma-separated: 'text', 'date', 'file', 'dropdown', 'picklist', 'dependent_dropdown'.
"dropdown,picklist"
One or more creator member emails, comma-separated.
"user@example.com"
Only properties created at or after this time (ISO 8601).
"2026-01-01T00:00:00Z"
Only properties created at or before this time (ISO 8601).
"2026-01-31T23:59:00Z"
Sort by creation time: 'asc' or 'desc'. Omit to keep the workspace's configured ordering.
asc, desc "desc"
Case-insensitive substring search on the property name.
"hello"
Return only chat or only ticket properties. Omit to return both.
chat, ticket "ticket"
Response
All custom properties in the workspace
Unique id of the custom property (property-xxxxxxxxxxxxxxxx). Accepted wherever a property_id path parameter or property reference is expected.
"property-aaaaaaaaaaaa"
Name of the property. Unique within its type (case-insensitive) — the same name can exist once as a chat property and once as a ticket property.
"Workspace"
Whether the property applies to chats ('chat') or to tickets ('ticket')
chat, ticket "ticket"
Value kind of the property: 'text', 'date', 'file', 'dropdown' (single choice), 'picklist' (multiple choice) or 'dependent_dropdown' (dashboard-created only — cannot be created via the API)
"dropdown"
Whether the property must be filled in. Always false for chat properties — only ticket properties can be mandatory.
false
Id of the section the property is placed under. null when the property is not in any section.
"00000000-0000-0000-0000-000000000000"
Name of the section the property is placed under. null when the property is not in any section.
"Issue Details"
Options of the property as {id, label} pairs. Present only for dropdown and picklist kinds — omitted for every other kind.
Show child attributes
Show child attributes
[ { "id": "1755859200000", "label": "Example Corp" }, { "id": "1755859200001", "label": "Globex" } ]
When the property was created, as an ISO 8601 timestamp
"2026-01-15T09:30:00.000Z"
Was this page helpful?