Applications API
The Applications API (also known as the ATS API) is designed for server-to-server integrations. It provides full access to manage candidates, applications, jobs, and webhooks.
Server-Side Only: This API should NOT be called from client-side code. API tokens for this API have elevated permissions and must be kept secure on your server.
Key Characteristics
| Feature | Description |
|---|---|
| Server-to-server | Must be called from your backend |
| Full access | Read and write operations |
| Webhook management | Create and manage webhooks |
| Sensitive data | Access to candidate information |
Use Cases
- HRIS integrations — Sync candidates with your HR systems
- Workflow automation — Trigger actions based on recruiting events
- Custom reporting — Build analytics dashboards
- Webhook management — Configure event subscriptions
Server-Side Example
Call the Applications API from your backend:
// Node.js server-side example
const token = process.env.KULA_API_TOKEN; // Keep token secure
async function getCandidates() {
const response = await fetch(
'https://api.kula.ai/v1/candidates',
{
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
}
);
return response.json();
}
Available Endpoints
Candidates
| Endpoint | Description |
|---|---|
GET /v1/candidates | List candidates |
POST /v1/candidates | Create a candidate |
POST /v1/candidates/search | Search candidates with rich filters |
GET /v1/candidates/{id} | Get candidate details |
PATCH /v1/candidates/{id} | Update a candidate |
Applications
| Endpoint | Description |
|---|---|
GET /v1/applications | List applications |
GET /v1/applications/{id} | Get application details |
PATCH /v1/applications/{id}/stage | Move application to a stage |
POST /v1/applications/{id}/files | Upload a file to an application |
GET /v1/applications/{id}/scorecards | List scorecards for an application |
GET /v1/applications/{id}/notes | List notes on an application |
POST /v1/applications/{id}/notes | Add a note to an application |
PATCH /v1/applications/{id}/notes/{note_id} | Update a note |
Jobs
| Endpoint | Description |
|---|---|
GET /v1/jobs | List jobs |
POST /v1/jobs/search | Search jobs with filters |
GET /v1/jobs/{id} | Get job details |
GET /v1/jobs/{id}/stages | List stages for a job |
POST /v1/jobs/{id}/stages | Create a stage for a job |
GET /v1/jobs/{id}/stages/{stage_id}/activities | List activities for a stage |
Requisitions
| Endpoint | Description |
|---|---|
GET /v1/requisitions/fields | List available requisition fields |
GET /v1/requisitions | List requisitions |
POST /v1/requisitions | Create a requisition |
GET /v1/requisitions/{id} | Get requisition details |
PATCH /v1/requisitions/{id} | Update a requisition |
POST /v1/requisitions/{id}/close | Close a requisition |
Lookup Data
| Endpoint | Description |
|---|---|
GET /v1/users | List users |
GET /v1/departments | List departments |
GET /v1/offices | List offices |
GET /v1/milestones | List milestones |
GET /v1/candidate-sources | List candidate sources |
GET /v1/custom-fields | List custom fields |
GET /v1/rejection-reasons | List rejection reasons |
Webhooks
| Endpoint | Description |
|---|---|
GET /v1/webhooks | List webhooks |
POST /v1/webhooks | Create a webhook |
GET /v1/webhooks/{id} | Get webhook details |
PATCH /v1/webhooks/{id} | Update a webhook |
DELETE /v1/webhooks/{id} | Delete a webhook |
Token Scope
Use a token with ats_api scope for this API. This scope provides full access and should only be used in secure server environments.
Security Best Practices
- Store tokens in environment variables
- Never expose tokens in client-side code
- Use HTTPS for all API calls
- Rotate tokens periodically
- Monitor API usage for anomalies
Next Steps
- Applications API Reference — Complete endpoint documentation
- Webhooks Setup — Configure real-time notifications