Integrate Coachful with your tools using our REST API. Powers the official Coachful apps on Zapier and OttoKit, and available for custom integrations.
All API requests require an API key. Generate one from your coach dashboard under Automations → Connections.
Include your API key in the X-API-Key header:
curl -H "X-API-Key: cfk_your_api_key_here" \ https://app.coachful.co/api/zapier/auth/test
Base URL: https://app.coachful.co
Rate Limits: 100 reads/min, 30 writes/min per API key
/api/zapier/auth/testVerify your API key and get organization info
Returns:
{
"organizationName": "My Coaching",
"coachName": "Jane Smith",
"organizationId": "..."
}Subscribe to events via REST Hooks. When events occur in your organization, we POST the event data to your webhook URL.
/api/zapier/hooksSubscribe to an event. Body: { hookUrl, event }
/api/zapier/hooks/:hookIdUnsubscribe from an event
client.checkin.completedA client completes a check-inclient.addedA new client joins your organizationprogram.purchasedA client purchases a programpayment.receivedA payment is receivedsession.completedA 1:1 coaching session is completedhabit.completedA client completes a habitgoal.achievedA client achieves a goalintake.call.bookedAn intake session is bookedintake.call.completedAn intake session is completedgroup.call.completedA group call is completedcourse.joinedA client joins a course/api/zapier/triggers/:eventPoll for recent events (returns last 50)
/api/zapier/triggers/:event/sampleGet sample data for an event
Perform actions in your Coachful organization. All actions require a POST request with a JSON body.
/api/zapier/actions/create-taskCreate a task for a client. Body: { clientEmail, title, date?, listType? }
/api/zapier/actions/create-habitCreate a habit for a client. Body: { clientEmail, text, frequency? }
/api/zapier/actions/send-messageSend a chat message. Body: { message, clientEmail?, channel?, programId?, cohortId? }
/api/zapier/actions/create-postCreate a feed post. Body: { content }
/api/zapier/actions/create-invoiceCreate an invoice. Body: { clientEmail, amount, description, currency? }
/api/zapier/actions/enroll-in-programEnroll a client in a program. Body: { clientEmail, programId, cohortId?, startDate? }
/api/zapier/actions/grant-resourceGrant resource access. Body: { clientEmail, resourceType, resourceId }
Look up data in your organization. Used for dynamic dropdowns in Zapier and for finding IDs.
/api/zapier/searches/find-client?email=...Find a client by email, or list all clients
/api/zapier/searches/list-programsList all programs in your organization
/api/zapier/searches/list-cohorts?programId=...List cohorts, optionally filtered by program
/api/zapier/searches/list-resources?resourceType=...List resources by type (course, article, download, video, link, questionnaire)
/api/zapier/searches/list-channelsList org chat channels
/api/zapier/searches/list-checkin-flowsList check-in flow templates
The Send Message action supports multiple targeting modes. Provide exactly one:
clientEmail — Send a direct message to a clientchannel — Post to an org channel (announcements, social, wins, or custom name)programId — Post to a program's community channelprogramId + cohortId — Post to a cohort's squad channelAll errors return a JSON object with an error field.
400Bad Request — Missing or invalid parameters401Unauthorized — Invalid or missing API key403Forbidden — Resource not in your organization404Not Found — Resource does not exist429Rate Limited — Too many requests500Server Error — Something went wrongQuestions about the API? Contact us at hello@coachful.co