Help Center
API Changelog
Notable changes to the Seedly CRM REST API.
All notable changes to the Seedly CRM REST API.
Expanded Webhook Events
Added
The outbound webhook catalog has grown from the original 15 events to 26. The following events are now available to subscribe to, in addition to the launch set:
opportunity.updated,opportunity.deletedappointment.cancelled,appointment.rescheduled,appointment.confirmed,appointment.completed,appointment.no_showtask.created,task.updated,task.completed,task.deleted
Existing subscriptions are unaffected. See the REST API and Webhook Payloads pages for the full list and payload shapes.
2026-03-27 -- Agency-Scoped API Keys
Added
- Agency-scoped API keys -- Create a single API key that operates across all sub-accounts under an agency. Prefix:
sk_agency_live_(production) andsk_agency_test_(sandbox). RequiresX-Sub-Account-Idheader on every request. GET /api/v1/sub-accounts-- Discovery endpoint to list available sub-accounts. Only accessible with agency-scoped keys.- New error codes:
MISSING_SUB_ACCOUNT(400),INVALID_SUB_ACCOUNT(403)
2026-03-27 -- v1 Launch
Initial release of the public REST API.
Added
Authentication:
- API key authentication with
sk_live_(production) andsk_test_(sandbox) prefixes - Scoped permissions:
contacts:read,contacts:write,conversations:read,conversations:write,calendars:read,calendars:write,webhooks:manage - Test mode keys -- messages recorded but not sent to providers
Contacts:
GET /api/v1/contacts-- list/search contacts, exact email lookup viaemailparamGET /api/v1/contacts/{id}-- get contactPOST /api/v1/contacts-- create contactPATCH /api/v1/contacts/{id}-- update contactDELETE /api/v1/contacts/{id}-- soft-delete contactGET /api/v1/contacts/fields-- list custom field definitions
Conversations:
GET /api/v1/conversations-- list conversations, filter bycontactIdGET /api/v1/conversations/{id}-- get conversationPOST /api/v1/conversations-- create or find existing conversationGET /api/v1/conversations/{id}/messages-- list messages (cursor-based pagination)POST /api/v1/conversations/{id}/messages-- send message (all channels)PATCH /api/v1/conversations/{id}-- update status/assignment
Calendars:
GET /api/v1/calendars-- list active calendarsGET /api/v1/calendars/types-- list appointment typesGET /api/v1/calendars/availability-- check available slotsGET /api/v1/calendars/appointments-- list appointmentsPOST /api/v1/calendars/appointments-- book appointmentDELETE /api/v1/calendars/appointments/{id}-- cancel appointment
Webhooks:
GET /api/v1/webhooks-- list subscriptionsPOST /api/v1/webhooks-- create subscriptionPATCH /api/v1/webhooks/{id}-- update subscriptionDELETE /api/v1/webhooks/{id}-- delete subscriptionPOST /api/v1/webhooks/{id}/regenerate-secret-- regenerate signing secret- 15 webhook events:
contact.created,contact.updated,contact.lifecycle_changed,contact.tag_added,opportunity.created,opportunity.stage_changed,opportunity.won,opportunity.lost,message.received,message.sent,message.delivered,message.failed,appointment.booked,form.submitted,invoice.paid
General:
- Per-key rate limiting with separate limits for read and write operations
- ISO 8601 timestamps in all responses
- Usage logging per API key
- Automated cleanup of expired keys and old usage logs