acme in https://acme.workable.com). Generate the token in Workable under Settings, Integrations, “Generate new token”, and pick the scopes you need. The token is shown once. Corsair asks for both on the first call that needs them. Self-hosted setups can pass them to the factory instead:
- Scopes. Each endpoint needs its own scope (
r_jobs,r_candidates,r_account,w_departments,w_members,r_employees,w_employees,r_timeoffand so on). A token without it gets a 403.r_employeesgrants access to confidential employee data. - Public job board.
publicJobs.listandpublicLocations.listcall Workable’s public careers API and need no token. Pass anysubdomainto read another company’s open roles; without one they use the connected account’s. - Subdomain. Only letters, digits and hyphens are accepted, so requests always go to
<subdomain>.workable.com. - Paging.
jobs.list,candidates.list,members.list,requisitions.listandevents.listtakelimit(up to 100) withsince_id/max_id.paging.nextin a response is the next page’s URL; pass itssince_idback to fetch it.employees.listpages withlimit(10, 20, 50 or 100 only) andoffsetinstead. - Rate limit. Workable allows 10 requests per token in a rolling 10 seconds. A read that gets a 429 waits until the reset time Workable sends, then retries.
- Writes are not retried. Workable has no idempotency keys, so creates, updates, invites and deletes fail fast on a 429 or a network error rather than risk running twice.
- Department deletes and merges. Workable answers 409 unless you pass
force: true, sometimes even when nothing else uses the department. - Time-off balances.
timeoffBalances.listneedsemployee_idwhen the token is an account token.
- 35 typed API operations
- 5 synced entities (
candidates,departments,employees,jobs,members) for fast.search()/.list()
Setup
1
Install
2
Add the plugin
corsair.ts
corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.More: API Key
4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List jobsQuery synced data
Candidates fetched bycandidates.list are kept locally.
candidates, departments, employees, jobs, members. See Database for filters and operators.
What’s next
API reference
Every
workable.api.* operation with input and output types.Database
Synced entities, search filters, and operators.
Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.