canonical: https://jentic.com/apis/kula.com/kula

# Kula API

Jentic publishes the only available OpenAPI specification for Kula API, keeping it validated and agent-ready. Kula is an outbound recruiting platform whose API exposes job boards, applicant tracking, candidate management, requisitions, and webhook delivery for hiring teams. Agents can list and create candidates, submit applications to published job posts, move applications between pipeline stages, open and close requisitions, and subscribe to webhook events for real-time hiring updates. The API is REST and bearer-token authenticated, with rate limits documented at 1000 requests per hour per account.

## For AI agents

Manage recruiting workflows on Kula: create candidates, submit job applications, move applications through stages, open or close requisitions, and subscribe to webhook events.

## Scope

Does not handle payroll, employee onboarding, or HRIS records - use for recruiting and applicant tracking only.

## Capabilities

- Submit candidate applications to a published job post via `/jobboards/jobs/{id}/applications` with attached resume uploads
- Move an application between pipeline stages by patching `/applications/{id}/stage` to reflect interview progress
- Open or close requisitions through /requisitions and `/requisitions/{id}/close` to control active hiring slots
- Subscribe to webhook events for application updates and rotate webhook secrets via `/webhooks/{id}/secret/rotate`
- Search published job boards by department, office, location, and academic discipline through the autocomplete endpoints
- Retrieve candidate and application detail records to feed downstream HRIS or analytics systems

## Use cases

### Embedded Careers Page

Power a public careers site by pulling published Kula job posts and rendering application forms with the fields the recruiting team configured. Visitors submit applications directly to Kula's ATS via the job boards endpoints, and uploaded resumes flow through `/jobboards/attachments/upload` before being attached to the application. This removes the need to host a parallel applicant database.

Example prompt: List published job posts via `/jobboards/jobs`, fetch the form fields for the chosen role, upload the candidate's resume to `/jobboards/attachments/upload`, and submit the application to `/jobboards/jobs/{id}/applications.`

### Pipeline Stage Automation

Move candidates through the hiring pipeline based on signals from interview tooling, assessments, or scheduling systems. The PATCH `/applications/{id}/stage` endpoint changes a candidate's stage in Kula, letting agents drive the pipeline without recruiter clicks. Combined with webhooks, this turns Kula into the source of truth while other systems supply the events.

Example prompt: Receive a 'interview-passed' event, look up the corresponding Kula application by candidate email, and PATCH `/applications/{id}/stage` to advance the candidate to the offer stage.

### Requisition Lifecycle Management

Open requisitions when a hiring plan is approved and close them once a hire is made. The /requisitions endpoints let agents create requisitions from structured templates, retrieve custom field definitions via `/requisitions/fields`, and close filled requisitions through `/requisitions/{id}/close` so recruiter dashboards stay accurate.

Example prompt: Create a requisition for 'Staff Engineer, Platform' on /requisitions with the department and office IDs returned from `/jobboards/departments` and `/jobboards/offices.`

### AI Agent Recruiting Assistant

Build a recruiting assistant that triages candidates, drafts outreach, and updates Kula in response to natural language instructions from a hiring manager. Through Jentic, the agent searches for the right Kula operation by intent, loads its schema, and executes calls without managing bearer tokens or hand-coded HTTP clients.

Example prompt: On the instruction 'close the Senior PM req we filled', search Jentic for 'close a Kula requisition', load the schema, find the requisition by title, and POST to `/requisitions/{id}/close.`

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/candidates` | List all candidates |
| POST | `/candidates` | Create a candidate |
| PATCH | `/applications/{id}/stage` | Move an application to a new pipeline stage |
| POST | `/requisitions` | Open a new requisition |
| POST | `/requisitions/{id}/close` | Close a filled requisition |
| POST | `/jobboards/jobs/{id}/applications` | Submit an application to a published job post |
| POST | `/webhooks` | Create a webhook subscription |

## Key resources

- **Candidates** — Create and retrieve candidate records that hold profile and application history.
- **Applications** — List, retrieve, and update applications, including stage transitions.
- **Requisitions** — Open, retrieve, update, and close requisitions with custom fields.
- **Job Boards** — Public-facing endpoints for published jobs, application forms, and attachment uploads.
- **Webhooks** — Subscribe to events, test deliveries, rotate secrets, and inspect delivery history.

## Why Jentic

- **Setup:** Wiring the Kula API by hand means handling its JWT bearer auth against api.kula.ai and mapping the candidate, application, and requisition request bodies yourself. Through Jentic you install once, import the Kula API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Kula puts the requisition id in the URL path (`/requisitions/{id}/close`), so a rule can pin your agent to one requisition: it can advance applications and post job-board applications and nothing else. You choose the operations it may call, so closing a requisition is not included unless you add it.
- **Credential handling:** Your Kula bearer token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'submit a job application' or 'close a requisition', and Jentic returns the matching Kula operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Greenhouse Harvest API** — Enterprise applicant tracking system with a more mature ecosystem than Kula.
- **Lever API** — Talent acquisition suite combining ATS and CRM in one API surface.
- **Workable API** — ATS used alongside Kula for organisations that split sourcing and tracking.

## FAQ

### Why is there no official OpenAPI spec for Kula API?

Kula does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Kula API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Kula API use?

Kula API uses HTTP bearer authentication: every request needs an Authorization header with a Kula-issued bearer token. Through Jentic, the bearer token is stored encrypted in your Jentic One instance and never appears in agent prompts or logs.

### Can I move candidates between hiring stages with the Kula API?

Yes. The PATCH `/applications/{id}/stage` endpoint updates the stage of an application, which is how a candidate progresses through Kula's pipeline. The request body takes a stage identifier you can resolve from the application record.

### What are the rate limits for the Kula API?

Kula documents a limit of 1000 requests per hour per account. Plan agent workloads to stay under this ceiling, and use webhooks instead of polling where possible by subscribing on /webhooks.

### How do I submit a job application through Jentic?

Search Jentic for 'submit application to a Kula job post'. Jentic returns the POST `/jobboards/jobs/{id}/applications` operation with its schema. Upload any resume file to `/jobboards/attachments/upload` first, then execute the application call with the returned attachment reference.

### Does the Kula API support webhooks?

Yes. /webhooks lets you create and manage subscriptions, `/webhooks/events` lists available events, and each subscription supports POST `/webhooks/{id}/test`, POST `/webhooks/{id}/secret/rotate`, and GET `/webhooks/{id}/deliveries` for inspecting delivery history.

### Can I limit what my agent is allowed to do with the Kula API?

Yes. Because you run Jentic One yourself, your own rules decide which Kula operations the agent can call, so you can let it advance applications with PATCH `/applications/{id}/stage` and submit job-board applications while excluding POST `/requisitions/{id}/close.` Kula puts the requisition id in the URL path, so a rule can pin the agent to a single requisition rather than every open one. The Kula bearer token stays with your Jentic One instance and is injected only when an operation you have allowed actually runs.
