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
POST /v1/candidates/{id}/resumesUpload a resume to 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

Interviews​

EndpointDescription
GET /v1/interviews/{id}/transcriptGet an interview transcript
GET /v1/interviews/{id}/ai_notesList AI notes for an interview

Scorecards​

EndpointDescription
GET /v1/scorecardsList scorecards
GET /v1/scorecards/{id}Get scorecard details
PATCH /v1/scorecards/{id}Update a scorecard
POST /v1/scorecards/{id}/submitSubmit a scorecard
POST /v1/scorecards/{id}/remindSend a scorecard reminder
POST /v1/scorecards/{id}/attachment_uploadsCreate a scorecard attachment upload link
DELETE /v1/scorecards/{id}/attachments/{attachment_id}Delete a scorecard attachment

Jobs​

EndpointDescription
GET /v1/jobsList jobs
POST /v1/jobs/searchSearch jobs with filters
GET /v1/jobs/{id}Get job details
POST /v1/jobsCreate a job
PATCH /v1/jobs/{id}Update a job
PATCH /v1/jobs/{id}/hiring_teamUpdate a job's hiring team
POST /v1/jobs/{id}/job_postCreate a job post
PATCH /v1/jobs/{id}/job_postUpdate a job post
POST /v1/jobs/{id}/publishPublish or schedule a job
POST /v1/jobs/{id}/closeClose a job
POST /v1/jobs/{id}/reopenReopen a job
POST /v1/jobs/{id}/archiveArchive a job
POST /v1/jobs/{id}/approveApprove a job
POST /v1/jobs/{id}/rejectReject a job
POST /v1/jobs/{id}/approval_remindersSend a job approval reminder
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
POST /v1/requisitions/{id}/openOpen a requisition
POST /v1/requisitions/{id}/approveApprove a requisition
POST /v1/requisitions/{id}/rejectReject a requisition
POST /v1/requisitions/{id}/submitSubmit a requisition
POST /v1/requisitions/{id}/reopenReopen a requisition
POST /v1/requisitions/{id}/archiveArchive a requisition
POST /v1/requisitions/{id}/approval_remindersSend a requisition approval reminder

Projects​

EndpointDescription
GET /v1/projectsList projects
POST /v1/projectsCreate a project
GET /v1/projects/{id}Get project details
PATCH /v1/projects/{id}Update a project
POST /v1/projects/{project_id}/candidatesAdd a candidate to a project
GET /v1/projects/{project_id}/candidatesList candidates in a project
DELETE /v1/projects/{project_id}/candidates/{candidate_id}Remove a candidate from a project
POST /v1/projects/{id}/archiveArchive a project
POST /v1/projects/{id}/cloneClone a project
PATCH /v1/projects/{id}/collaboratorsUpdate a project's collaborators

Reviews​

EndpointDescription
POST /v1/projects/{project_id}/reviewsSend a candidate for review
GET /v1/reviewsList reviews
GET /v1/reviews/{id}Get review details
POST /v1/reviews/{id}/decisionRecord a review decision
POST /v1/reviews/{id}/resendResend a review request
POST /v1/reviews/{id}/revokeRevoke a review request

Users​

EndpointDescription
GET /v1/usersList users
GET /v1/users/{id}Retrieve a user
POST /v1/usersCreate (invite) a user
PATCH /v1/users/{id}Update a user
POST /v1/users/{id}/deactivateDeactivate a user
POST /v1/users/{id}/reactivateReactivate a user

Roles​

EndpointDescription
GET /v1/rolesList roles
GET /v1/roles/{id}Retrieve a role (with permissions)

Lookup Data​

EndpointDescription
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
GET /v1/close-reasonsList close reasons
GET /v1/application_form_templatesList application form templates
GET /v1/job_description_templatesList job description templates
GET /v1/employment_typesList employment types
GET /v1/job_profilesList job profiles
GET /v1/locationsSearch cities, states, and countries
GET /v1/companiesSearch companies
GET /v1/industriesList industries
GET /v1/institutionsSearch academic institutions
GET /v1/disciplinesSearch academic disciplines
GET /v1/degreesList academic degrees
GET /v1/tagsSearch tags
GET /v1/skillsSearch skills
GET /v1/currenciesList currencies
GET /v1/email_templatesList email and calendar-invite templates

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​