Integrations Guide
Connect Fishladder to Zapier, Make, n8n, and other automation platforms
Overview
Fishladder provides a REST API that is compatible with all major automation platforms. You can use it to trigger automations when things happen in Fishladder (e.g. a task is created), or to push data into Fishladder from other tools (e.g. create a task from a form submission).
There are two ways to receive events from Fishladder:
- Webhooks (real-time) — Fishladder sends an HTTP POST to your URL when an event occurs
- Polling (periodic) — Your platform polls an endpoint for new/updated items
Authentication
All API requests require a Bearer token. Generate one from Settings → API Keys. Each key is scoped to a single team.
When configuring your automation platform, set the authentication type to API Key or Bearer Token, and enter your Fishladder API key.
# All requests include this header:
Authorization: Bearer fl_your_key_hereRate limit, per API key per hour: 1,000 reads and 200 writes, counted separately so a read-heavy integration cannot exhaust its own write budget. Exceeded requests return 429 Too Many Requests with a Retry-After header and a scope field naming which budget ran out.
Available Triggers
These are events that can trigger automations in your workflow platform. They are delivered via webhooks (real-time) or polling endpoints (periodic).
task.createdA new task is created in a tracker projecttask.updatedA task is modified (title, assignee, priority, etc.)task.completedA task is marked as completetask.deletedA task is deletedapplication.createdA new job application is submittedapplication.stage_changedAn application moves to a different pipeline stageapplication.status_changedAn application status changes (active, rejected, hired)candidate.createdA new candidate is addedgoal.updatedA goal is created or modifiedAvailable Actions
These are things your automation can do in Fishladder. All endpoints use Bearer auth.
Tasks
/api/v1/tasksList tasks. Optional query: ?projectId=...
/api/v1/tasksCreate a task. Required: title, projectId
Projects (Roadmap)
/api/v1/projects/api/v1/projectsFeedback
/api/v1/feedback/api/v1/feedbackGoals, Initiatives, Members
Full CRUD available — see the API Reference for details.
Webhook Setup
For real-time triggers, subscribe to webhook events. This is what Zapier and Make use under the hood when you set up a trigger.
Subscribe to events
curl -X POST https://app.ladder.fish/api/v1/webhooks \
-H "Authorization: Bearer fl_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"targetUrl": "https://hooks.zapier.com/hooks/catch/123/abc/",
"events": ["task.created", "task.completed"]
}'
# Response (201)
{
"id": "a1b2c3d4",
"targetUrl": "https://hooks.zapier.com/hooks/catch/123/abc/",
"events": ["task.created", "task.completed"],
"active": true,
"secret": "64-char-hex-secret-for-hmac-verification",
"createdAt": "2026-03-06T10:00:00.000Z",
"updatedAt": "2026-03-06T10:00:00.000Z"
}List subscriptions
curl https://app.ladder.fish/api/v1/webhooks \
-H "Authorization: Bearer fl_your_key_here"
# Returns array of active webhook subscriptionsUnsubscribe
curl -X DELETE https://app.ladder.fish/api/v1/webhooks/{id} \
-H "Authorization: Bearer fl_your_key_here"
# Response: { "ok": true }Webhook delivery
When an event occurs, Fishladder sends an HTTP POST to your targetUrl with these headers:
X-Fishladder-EventEvent type (e.g. task.created)X-Fishladder-DeliveryUnique delivery ID for deduplicationX-Fishladder-SignatureHMAC-SHA256 signature of the request body, signed with your secretContent-Typeapplication/jsonPolling Endpoints
Some platforms (including Zapier in basic mode) poll an endpoint periodically instead of using webhooks. These endpoints return items sorted newest-first, so the platform can check for new items since the last poll.
/api/v1/poll/tasksRecent tasks, sorted newest-first
/api/v1/poll/candidatesRecent candidates, sorted newest-first
/api/v1/poll/applicationsRecent applications, sorted newest-first
All polling endpoints accept an optional ?since=ISO_DATE query parameter to only return items created/updated after a given timestamp.
curl "https://app.ladder.fish/api/v1/poll/tasks?since=2026-03-01T00:00:00Z" \
-H "Authorization: Bearer fl_your_key_here"Example Payloads
These are the JSON payloads sent via webhooks when events occur.
task.created
{
"event": "task.created",
"task": {
"id": "a1b2c3d4",
"projectId": "proj-123",
"title": "Design landing page",
"assigneeId": "user_abc",
"priority": "high"
},
"timestamp": "2026-03-06T14:30:00.000Z"
}task.completed
{
"event": "task.completed",
"task": {
"id": "a1b2c3d4",
"projectId": "proj-123",
"title": "Design landing page",
"assigneeId": "user_abc",
"completedAt": "2026-03-06T16:00:00.000Z"
},
"timestamp": "2026-03-06T16:00:00.000Z"
}application.created
{
"event": "application.created",
"application": {
"id": "app-456",
"jobId": "job-789",
"candidateId": "cand-012",
"stageId": "stage-initial",
"status": "active"
},
"timestamp": "2026-03-06T09:15:00.000Z"
}candidate.created
{
"event": "candidate.created",
"candidate": {
"id": "cand-012",
"firstName": "Jane",
"lastName": "Smith",
"email": "[email protected]"
},
"timestamp": "2026-03-06T09:14:00.000Z"
}goal.updated
{
"event": "goal.updated",
"goal": {
"id": "goal-abc",
"title": "Improve retention by 20%",
"status": "active",
"color": "#6366f1"
},
"timestamp": "2026-03-06T11:00:00.000Z"
}Platform Guides
Zapier
- In Zapier, choose Webhooks by Zapier as your trigger app
- Select Catch Hook to get a webhook URL
- Use the Fishladder API to subscribe that URL to events (see Webhook Setup above)
- For actions, use Webhooks by Zapier → Custom Request with Bearer auth
- Alternatively, use Zapier's API Request (Beta) trigger to poll
/api/v1/poll/tasks
Make (Integromat)
- Add a Webhooks → Custom webhook module as your trigger
- Copy the webhook URL and subscribe it via the Fishladder API
- For actions, use HTTP → Make a request with Bearer token auth
- Set the base URL to
https://app.ladder.fish
n8n
- Add a Webhook node as your trigger
- Copy the production URL and subscribe it via the Fishladder API
- For actions, use the HTTP Request node
- Set authentication to Header Auth with name
Authorizationand valueBearer fl_your_key
Fishladder Integrations Guide · See also: API Reference