Changelog
Changelog
A record of changes to the SkyLight Chat API.
April 2026
GET /api/v1/contacts/segments/{id}/members— Paginated contacts in a segment (same fields as list members). Optional query:per_page(max 100).
v1.5.0 — March 2026
Major expansion of the REST API — 10 new resources and 85+ new endpoints. Webhook coverage expanded to 30 events across 9 resource types.
New endpoints
Tags
GET /api/v1/tags— List all tagsPOST /api/v1/tags— Create a tagGET /api/v1/tags/{id}— Get a tagPUT /api/v1/tags/{id}— Rename a tagDELETE /api/v1/tags/{id}— Delete a tag (removes it from all contacts)POST /api/v1/contacts/{id}/tags— Add a tag to a contactDELETE /api/v1/contacts/{id}/tags/{tag_id}— Remove a tag from a contact
Lists & Segments
GET /api/v1/contacts/lists— List all contact listsPOST /api/v1/contacts/lists— Create a listGET /api/v1/contacts/lists/{id}— Get a listPUT /api/v1/contacts/lists/{id}— Update a listDELETE /api/v1/contacts/lists/{id}— Delete a listGET /api/v1/contacts/lists/{id}/members— Get list membersPOST /api/v1/contacts/{id}/lists— Add a contact to a listDELETE /api/v1/contacts/{id}/lists/{list_id}— Remove a contact from a listGET /api/v1/contacts/segments— List all segmentsPOST /api/v1/contacts/segments— Create a segmentGET /api/v1/contacts/segments/{id}/members— Get segment membersPUT /api/v1/contacts/segments/{id}— Update a segmentDELETE /api/v1/contacts/segments/{id}— Delete a segmentPOST /api/v1/contacts/{id}/segments— Add a contact to a segmentDELETE /api/v1/contacts/{id}/segments/{segment_id}— Remove a contact from a segment
AI Agents
GET /api/v1/ai-agents— List AI agent personasPOST /api/v1/ai-agents— Create an AI agentGET /api/v1/ai-agents/{id}— Get an AI agentPUT /api/v1/ai-agents/{id}— Update an AI agentDELETE /api/v1/ai-agents/{id}— Delete an AI agentPOST /api/v1/ai-agents/{id}/set-default— Set as default agentPOST /api/v1/ai-agents/{id}/assign— Bulk-assign agent to contacts
Campaigns
GET /api/v1/campaigns— List campaignsPOST /api/v1/campaigns— Create a campaignGET /api/v1/campaigns/{id}— Get a campaignPUT /api/v1/campaigns/{id}— Update a draft campaignDELETE /api/v1/campaigns/{id}— Delete a draft or cancelled campaignPOST /api/v1/campaigns/{id}/start— Start a campaignPOST /api/v1/campaigns/{id}/pause— Pause a campaignPOST /api/v1/campaigns/{id}/resume— Resume a campaignPOST /api/v1/campaigns/{id}/cancel— Cancel a campaignGET /api/v1/campaigns/{id}/contacts— List campaign contacts and delivery status
Support Tickets
GET /api/v1/tickets— List ticketsPOST /api/v1/tickets— Create a ticketGET /api/v1/tickets/{id}— Get a ticket with reply historyPOST /api/v1/tickets/{id}/reply— Reply to a ticketPOST /api/v1/tickets/{id}/close— Close a ticketGET /api/v1/tickets/departments— List available departments
Web Chat
GET /api/v1/web-chat/analytics— Get chat widget analyticsGET /api/v1/web-chat/sessions— List sessionsGET /api/v1/web-chat/sessions/{session_id}— Get session with messagesPOST /api/v1/web-chat/sessions/{session_id}/take-over— Transfer session to humanPOST /api/v1/web-chat/sessions/{session_id}/release— Return session to AIPOST /api/v1/web-chat/sessions/{session_id}/messages— Send an agent messagePOST /api/v1/web-chat/sessions/{session_id}/end— End a session
Knowledge Base
GET /api/v1/knowledge-base— List knowledge base entriesPOST /api/v1/knowledge-base— Create a text entryPOST /api/v1/knowledge-base/document— Upload documents (PDF, DOCX, XLSX, TXT, CSV) — AI extracts contentPOST /api/v1/knowledge-base/voice— Upload audio file — Whisper transcriptionPOST /api/v1/knowledge-base/product-catalog— Create product catalog (JSON array or CSV upload)POST /api/v1/knowledge-base/website— Submit website URL for crawling (async)GET /api/v1/knowledge-base/{id}/status— Poll processing/crawl statusPOST /api/v1/knowledge-base/{id}/products— Add products to an existing catalogDELETE /api/v1/knowledge-base/{id}/products/{product_id}— Remove a product from a catalogGET /api/v1/knowledge-base/{id}— Get an entry with all associated contentPUT /api/v1/knowledge-base/{id}— Update an entry (content changes clear cached embeddings)DELETE /api/v1/knowledge-base/{id}— Delete an entry and all associated files
Voice
GET /api/v1/voice— Get voice settings and statusGET /api/v1/voice/status— Test API key connectivityGET /api/v1/voice/dialects— List supported language dialectsPATCH /api/v1/voice/settings— Update voice settings (dialect, language, key, on/off)POST /api/v1/voice/clone— Clone a voice from an audio samplePOST /api/v1/voice/preload— Warm up the voice for zero-latency synthesisPOST /api/v1/voice/tts— Convert text to speech (returns a public audio URL)DELETE /api/v1/voice— Delete the cloned voice
Channels
POST /api/v1/channels/whatsapp/connect— Generate QR code for WhatsAppGET /api/v1/channels/whatsapp/status— Poll connection statusPOST /api/v1/channels/whatsapp/refresh— Sync status from UnipilePOST /api/v1/channels/whatsapp/disconnect— Disconnect WhatsAppPOST /api/v1/channels/telegram/connect— Generate QR code for TelegramGET /api/v1/channels/telegram/status— Poll connection statusPOST /api/v1/channels/telegram/refresh— Sync status from UnipilePOST /api/v1/channels/telegram/disconnect— Disconnect TelegramPOST /api/v1/channels/instagram/connect— Connect with username and passwordPOST /api/v1/channels/instagram/2fa— Submit 2FA verification codePOST /api/v1/channels/instagram/2fa/resend— Resend 2FA codeGET /api/v1/channels/instagram/status— Get connection statusPOST /api/v1/channels/instagram/refresh— Sync status from UnipilePOST /api/v1/channels/instagram/disconnect— Disconnect Instagram
Webhooks — 19 new events (was 11, now 30)
channel.connected— a channel connects or reconnectschannel.disconnected— a channel goes offlinechannel.error— a channel fails to connectcampaign.started— a campaign starts sendingcampaign.completed— a campaign finishes sendingcampaign.paused— a campaign is pausedcampaign.cancelled— a campaign is cancelledcampaign.failed— a campaign encounters a critical failureknowledge_base.created— a knowledge base entry is createdknowledge_base.updated— a knowledge base entry is updatedknowledge_base.deleted— a knowledge base entry is deletedknowledge_base.processing.completed— document/voice/website processing finishesknowledge_base.processing.failed— document/voice/website processing failsticket.updated— a ticket's details changeticket.closed— a ticket is closed or resolvedai_agent.created— an AI agent persona is createdai_agent.updated— an AI agent persona is updatedai_agent.deleted— an AI agent persona is deleted
Improvements
- Knowledge Base API now supports all five content types — documents, voice transcriptions, product catalogs, and website scraping are now fully manageable via API (not just text)
- Channel Management API — connect, refresh, and disconnect WhatsApp, Telegram, and Instagram via API (QR for WhatsApp/Telegram, credentials for Instagram with 2FA support)
- Webhook coverage expanded from 11 to 30 events — channel status, campaign lifecycle, knowledge base, tickets, and AI agent events all now fire webhooks
- Contact endpoints now support filtering and listing tags, lists, and segments
- Global API key fallback supported for voice synthesis — clients can provide their own key or rely on the system key
- Campaigns support mixed audience targeting: explicit contact IDs, lists, segments, or any combination
- Ticket creation auto-assigns to the first available department when none is specified
v1.0.0 — March 2026
Initial release of the SkyLight Chat REST API v1 and Webhooks system.
New endpoints
Contacts
GET /api/v1/contacts— List contacts with search and filterPOST /api/v1/contacts— Create a contactGET /api/v1/contacts/{id}— Get a contactPUT /api/v1/contacts/{id}— Update a contactDELETE /api/v1/contacts/{id}— Delete a contactPOST /api/v1/contacts/{id}/blacklist— Toggle blacklistGET /api/v1/contacts/{id}/notes— List notesPOST /api/v1/contacts/{id}/notes— Add a note
Messages
GET /api/v1/conversations— List conversationsGET /api/v1/contacts/{id}/messages— List messages for a contactPOST /api/v1/messages/send— Send a message via a connected channel
Bookings
GET /api/v1/bookings— List bookingsPOST /api/v1/bookings— Create a bookingGET /api/v1/bookings/{id}— Get a bookingPUT /api/v1/bookings/{id}— Update a bookingPOST /api/v1/bookings/{id}/cancel— Cancel a bookingGET /api/v1/bookings/types— List booking typesGET /api/v1/bookings/resources— List resourcesGET /api/v1/bookings/availability— Check available slots
Webhooks
GET /api/v1/webhooks— List webhooksPOST /api/v1/webhooks— Create a webhookGET /api/v1/webhooks/{id}— Get a webhookPUT /api/v1/webhooks/{id}— Update a webhookDELETE /api/v1/webhooks/{id}— Delete a webhookPOST /api/v1/webhooks/{id}/test— Send test eventGET /api/v1/webhooks/{id}/deliveries— List delivery logsPOST /api/v1/webhooks/{id}/regenerate-secret— Rotate secretGET /api/v1/webhooks/events— List available events
Account
GET /api/v1/account— Get account profilePATCH /api/v1/account— Update account profileGET /api/v1/account/subscription— Get subscription & plan detailsGET /api/v1/account/channels— Get connected channel status
Team
GET /api/v1/team— List team membersPOST /api/v1/team— Create a team memberGET /api/v1/team/{id}— Get a team memberPUT /api/v1/team/{id}— Update a team memberDELETE /api/v1/team/{id}— Delete a team member
Webhook events
11 event types available on launch:
contact.created · contact.updated · contact.deleted · message.received · message.sent · booking.created · booking.updated · booking.cancelled · booking.completed · ticket.created · ticket.replied
Security
- Bearer token authentication (
Authorization: Bearer <key>) X-Api-Keyheader alternative- Domain whitelisting per API key
- HMAC-SHA256 webhook payload signing
- Rate limiting: 120 requests per minute per key
