Skip to main content

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

FeatureDescription
Server-to-serverMust be called from your backend
Full accessRead and write operations
Webhook managementCreate and manage webhooks
Sensitive dataAccess 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

EndpointDescription
GET /v1/candidatesList candidates
POST /v1/candidatesCreate a candidate
POST /v1/candidates/searchSearch candidates with rich filters
GET /v1/candidates/{id}Get candidate details
PATCH /v1/candidates/{id}Update a candidate

Applications

EndpointDescription
GET /v1/applicationsList applications
GET /v1/applications/{id}Get application details
PATCH /v1/applications/{id}/stageMove application to a stage
POST /v1/applications/{id}/filesUpload a file to an application
GET /v1/applications/{id}/scorecardsList scorecards for an application
GET /v1/applications/{id}/notesList notes on an application
POST /v1/applications/{id}/notesAdd a note to an application
PATCH /v1/applications/{id}/notes/{note_id}Update a note

Jobs

EndpointDescription
GET /v1/jobsList jobs
POST /v1/jobs/searchSearch jobs with filters
GET /v1/jobs/{id}Get job details
GET /v1/jobs/{id}/stagesList stages for a job
POST /v1/jobs/{id}/stagesCreate a stage for a job
GET /v1/jobs/{id}/stages/{stage_id}/activitiesList activities for a stage

Requisitions

EndpointDescription
GET /v1/requisitions/fieldsList available requisition fields
GET /v1/requisitionsList requisitions
POST /v1/requisitionsCreate a requisition
GET /v1/requisitions/{id}Get requisition details
PATCH /v1/requisitions/{id}Update a requisition
POST /v1/requisitions/{id}/closeClose a requisition

Lookup Data

EndpointDescription
GET /v1/usersList users
GET /v1/departmentsList departments
GET /v1/officesList offices
GET /v1/milestonesList milestones
GET /v1/candidate-sourcesList candidate sources
GET /v1/custom-fieldsList custom fields
GET /v1/rejection-reasonsList rejection reasons

Webhooks

EndpointDescription
GET /v1/webhooksList webhooks
POST /v1/webhooksCreate 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