Efficient data retrieval often requires filtering the dataset to match specific criteria. The Kini API supports filtering across multiple endpoints.

Supported Endpoints

Filtering is supported for the GET /jobs, GET /candidates, and GET /applications endpoints. Ensure you use the correct parameters to avoid unnecessary data processing.

Filtering Parameters

The following parameters can be used to filter results across different endpoints:

GET /jobs

ParameterDescriptionFilter TypeExample Usage
external_idFilters jobs by their unique external identifierExact match/jobs?external_id=12345
titleFilters jobs by their titleContains (case-insensitive)/jobs?title=developer
statusFilters jobs by their current status. Possible values: active, deleted, archivedExact match/jobs?status=active
remoteFilters jobs by remote work type. Possible values: remote, hybrid, on-siteExact match/jobs?remote=remote
languageFilters jobs by the required languageExact match/jobs?language=en
cityFilters jobs by cityContains (case-insensitive)/jobs?city=Berlin
countryFilters jobs by countryExact match/jobs?country=DE
import_sourceFilters jobs by the source of their importExact match/jobs?import_source=API
created_atFilters jobs by their creation dateGreater than or equal/jobs?created_at=2024-01-01
updated_atFilters jobs by their last update dateGreater than or equal/jobs?updated_at=2024-01-01
last_content_update_atFilters jobs by their last content update dateGreater than or equal/jobs?last_content_update_at=2024-01-01

GET /applications

ParameterDescriptionFilter TypeExample Usage
emailFilters applications by applicant emailExact match/[email protected]
partner_application_idFilters by the partner's application IDExact match/applications?partner_job_id=8262
partner_job_idFilters by the partner's job IDExact match/applications?partner_job_id=123_4
partner_company_idFilters by the partner's company IDExact match/applications?partner=acme-inc
partnerFilters by the partner IDExact match/applications?partner=4
agency_job_idFilters by the agency's job IDExact match/applications?agency_job_id=1234
agencyFilters by the agency IDExact match/applications?agency=12
channelFilters by the application channelExact match/applications?channel=LinkedIn
jobFilters by the related job IDExact match/applications?job=1234
import_sourceFilters by the source of the applicationExact match'/applications?import_source=API'
sync_statusFilters by the synchronization status. Possible values: SUCCESS, EXPECTED_FAILURE, FAILURE, NOTSENTExact match/applications?sync_status=SUCCESS
applied_atFilters applications by application dateGreater than or equal/applications?applied_at=2024-01-01
created_atFilters applications by their creation dateGreater than or equal/applications?created_at=2024-01-01
updated_atFilters applications by their last update dateGreater than or equal/applications?updated_at=2024-01-01

GET /companies

ParameterDescriptionFilter TypeExample Usage
nameFilters companies by their nameContains (case-insensitive)/companies?name=Acme
atsFilters companies by their applicant tracking system (ATS)Exact match/companies?ats=personio
candidate_sync_activeFilters companies by candidate synchronization status (true/false)Exact match/companies?candidate_sync_active=true
job_sync_activeFilters companies by job synchronization status (true/false)Exact match/companies?job_sync_active=false

Explanation of Filter Types:

  • Exact match: The filter will return results that match the parameter value exactly.
  • Contains (case-insensitive): The filter matches partial values, regardless of case (e.g., title=developer will match "Software Developer").
  • Greater than or equal: Filters results where the value is greater than or equal to the provided value, typically used with date fields.

Example Requests

  1. Filter Jobs by Status and Location
    Retrieve all active jobs located in Berlin:
    GET /jobs?status=active&location=Berlin
  2. Filter Candidates by Creation Date
    Retrieve candidates created after January 1, 2024:
    GET /candidates?created_at=2024-01-01

Response Format

Filtered requests return the same response format as paginated requests, with metadata fields like count, next, and previous. The results array will contain only entries matching the specified filters.

Example Response

{
  "count": 125,
  "next": "https://api.getkini.com/jobs?status=active&page=1&limit=20",
  "previous": null,
  "results": [
    {
      "id": 42,
      "title": "Software Developer",
      "status": "active"
    },
    {
      "id": 43,
      "title": "Data Scientist",
      "status": "active"
    }
  ]
}

Best Practices

  1. Combine Filtering with Pagination
    Use filters together with pagination to efficiently navigate large datasets while retrieving only relevant data.

    Example:

    GET /jobs?status=active&location=Berlin&page=1&limit=20
  2. Validate Filter Parameters
    Ensure your filter parameters are valid for the specified endpoint. Invalid filters will be ignored by the API.

  3. Use Date Filters Wisely
    When using date filters like created_at, ensure you format the date correctly to avoid errors.