Skip to main content

Periskope API: New Endpoints, Search & More

We've shipped a major upgrade to the Periskope API with new endpoints, search and filtering across list endpoints, and several developer-experience improvements.

Everything is live and fully backward-compatible, so existing integrations continue to work unchanged.


📅 Scheduled Messages

You can now schedule one-off or recurring messages and manage their full lifecycle through the API:

  • POST /v1/message/scheduled - Create a scheduled message with text/media, scheduled_at, and repeat configuration

  • GET /v1/message/scheduled - List scheduled messages with filters for chat, status, repeat, q, and time window

  • GET /v1/message/scheduled/{id} - Fetch a scheduled message and its current status

  • PATCH /v1/message/scheduled/{id} - Edit, pause, resume, or skip the next run

  • DELETE /v1/message/scheduled/{id} - Delete a scheduled message while preserving run history

  • GET /v1/message/scheduled/{id}/occurrences - Retrieve paginated run history


📨 Send & confirm

Send a message and wait for delivery confirmation in the same request, with a default 20-second wait and automatic asynchronous fallback if it times out.

  • POST /v1/message/send-sync


📜 Audit logs

Audit trails are now available for chats and tickets, filterable by actor, action, and time.

  • GET /v1/chats/{chat_id}/audit-logs

  • GET /v1/tickets/{ticket_id}/audit-logs


🤖 Per-chat AI controls

Turn AI replies and AI flagging on or off for an individual chat.

  • PATCH /v1/chats/{chat_id}/ai


🔎 Search & filters, now across list endpoints

Major list endpoints now support free-text q search and consistent filtering. q uses literal substring matching.

Multi-value filters are comma-separated, with OR logic within a filter and AND logic across filters. Most endpoints also support time windows and sort_by / sort_order.

Endpoint

Added

GET /v1/chats

q · chat_id, chat_type, label filters

GET /v1/contacts

q (name or phone)

GET /v1/tasks

q · type/status/priority/assignee/created_by · date windows · sort

GET /v1/tickets

q · raised_by/assignee/assigned_by/status/priority · priority_min/max · date windows · sort

GET /v1/properties

q · property_value_type/created_by · time window · sort

GET /v1/notes

q (body)

GET /v1/chats/{chat_id}/messages

q · start_time / end_time

GET /v1/chats/{chat_id}/notifications

q · start_time / end_time

GET /v1/chats/{chat_id}/notes

q

GET /v1/chats/notifications

q

Message search is also faster: POST /v1/message/search now supports full-text search, date filters, and a limit of up to 50.

Chat and contact search are more reliable too, with q now matching phone numbers as well as names.


⚡ Developer experience

x-phone is now optional on most routes. When omitted, the API automatically derives it from the chat, message, or request body where possible.

Validation is now more consistent. Invalid requests return clear 422 field-level errors upfront.


Full endpoint details and request/response examples are in the API reference doc. If you run into issues or have questions, let us know. ✨