Trakstar Candidates API

Manage job candidates

OpenAPI Specification

trakstar-candidates-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Trakstar Hire Auth Candidates API
  description: The Trakstar Hire REST API (formerly Recruiterbox) enables developers to manage openings, candidates, candidate messages, internal notes, interviews, reviews, evaluations, and to-dos programmatically. It returns JSON responses and uses API key authentication generated from the account's Super Admin settings. The most common use cases include building custom career sites and syncing opening or candidate data with external systems.
  version: '2'
  contact:
    name: Trakstar Hire Support
    url: https://support.hire.trakstar.com/article/1617-accessing-the-hire-api
  license:
    name: Proprietary
servers:
- url: https://{companyName}.hire.trakstar.com/api/v2
  description: Trakstar Hire API v2
  variables:
    companyName:
      description: Your company subdomain name
      default: yourcompany
security:
- apiKey: []
tags:
- name: Candidates
  description: Manage job candidates
paths:
  /candidates:
    get:
      operationId: listCandidates
      summary: List Candidates
      description: Returns a paginated list of candidates, optionally filtered by opening.
      tags:
      - Candidates
      parameters:
      - name: opening
        in: query
        description: Filter candidates by opening ID.
        required: false
        schema:
          type: integer
      - name: limit
        in: query
        description: Number of results per page.
        required: false
        schema:
          type: integer
          default: 10
          maximum: 100
      - name: offset
        in: query
        description: Number of results to skip for pagination.
        required: false
        schema:
          type: integer
          default: 0
      responses:
        '200':
          description: A list of candidates.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    nullable: true
                  previous:
                    type: string
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/Candidate'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createCandidate
      summary: Create Candidate
      description: Creates a new candidate record.
      tags:
      - Candidates
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CandidateInput'
      responses:
        '201':
          description: Candidate created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Candidate'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /candidates/{id}:
    get:
      operationId: getCandidate
      summary: Get Candidate
      description: Returns a single candidate by ID.
      tags:
      - Candidates
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the candidate.
        schema:
          type: integer
      responses:
        '200':
          description: A single candidate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Candidate'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateCandidate
      summary: Update Candidate
      description: Partially updates a candidate record.
      tags:
      - Candidates
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the candidate.
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CandidateInput'
      responses:
        '200':
          description: Candidate updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Candidate'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCandidate
      summary: Delete Candidate
      description: Deletes a candidate record.
      tags:
      - Candidates
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the candidate.
        schema:
          type: integer
      responses:
        '204':
          description: Candidate deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    Unauthorized:
      description: Authentication credentials were not provided or are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource could not be found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request was invalid or cannot be otherwise served.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    CandidateInput:
      type: object
      required:
      - first_name
      - last_name
      - opening
      properties:
        first_name:
          type: string
          description: Candidate's first name.
        last_name:
          type: string
          description: Candidate's last name.
        email:
          type: string
          format: email
          description: Candidate's email address.
        phone:
          type: string
          description: Candidate's phone number.
          nullable: true
        opening:
          type: integer
          description: ID of the opening the candidate is applying to.
        source:
          type: string
          description: Source of the candidate application.
          nullable: true
    Error:
      type: object
      properties:
        detail:
          type: string
          description: Human-readable error message.
    Candidate:
      type: object
      description: A candidate applying to a job opening.
      properties:
        id:
          type: integer
          description: Unique identifier for the candidate.
          readOnly: true
        first_name:
          type: string
          description: Candidate's first name.
        last_name:
          type: string
          description: Candidate's last name.
        email:
          type: string
          format: email
          description: Candidate's email address.
        phone:
          type: string
          description: Candidate's phone number.
          nullable: true
        opening:
          type: integer
          description: ID of the opening the candidate is applying to.
        stage:
          type: string
          description: Current stage of the candidate in the hiring pipeline.
          nullable: true
        source:
          type: string
          description: Source of the candidate application.
          nullable: true
        created_at:
          type: string
          format: date-time
          description: Timestamp when the candidate record was created.
          readOnly: true
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the candidate record was last updated.
          readOnly: true
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: API key generated from the Trakstar Hire Super Admin settings page. Pass as "ApiKey {your_api_key}".
externalDocs:
  description: Trakstar Hire API Reference
  url: https://developers.recruiterbox.com/reference/introduction