import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
});
async function main() {
const response = await client.properties.getPropertyById({
property_id: 'property-aaaaaaaaaaaa',
});
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/properties/property-aaaaaaaaaaaa' \
-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": "NOT_FOUND_ERROR",
"message": "No custom property matches property_id",
"status": 404
}{
"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 Custom Property
Looks up a custom property by property_id or name (case-insensitive), including its options.
import { PeriskopeApi } from '@periskope/periskope-client';
const client = new PeriskopeApi({
authToken: 'YOUR_API_KEY',
});
async function main() {
const response = await client.properties.getPropertyById({
property_id: 'property-aaaaaaaaaaaa',
});
console.log(response);
}
main();curl -X GET 'https://api.periskope.app/v1/properties/property-aaaaaaaaaaaa' \
-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": "NOT_FOUND_ERROR",
"message": "No custom property matches property_id",
"status": 404
}{
"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.
Path Parameters
The property_id (property-xxxxxxxxxxxxxxxx) or the name (case-insensitive) of the custom property. Prefer the property_id — a name that exists as both a chat and a ticket property is ambiguous without the type query parameter.
1"property-aaaaaaaaaaaa"
Query Parameters
Resolves the chat or the ticket property when property_id is a name that exists as both. Not needed when passing a property_id, or when the name only exists under one type.
chat, ticket "ticket"
Response
The matched property (or array of matches, see data)
- object
- object[]
The matched property. An array of every match when property_id is a name that exists as both a chat and a ticket property and no type query parameter was passed.
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?