Changelog

v2.12 - 2026-10-22

Added

  • Added optional icebreaker_settings.strict_custom_instructions, default false. When true, custom_instructions replace the Mantiks editorial template for the icebreaker message. Requires use_custom_instructions. Saving forces include_hiring_question, include_closing_salutation, and recruiter.enable to false. candidate.enable stays as sent.

Fixed

  • Search configurations reject company.size when gte exceeds lte, returning a validation error (HTTP 400).
  • Omitting icebreaker_settings.strict_custom_instructions, or sending null, stores and applies the field as false.

v2.11 - 2026-10-19

Added

  • Job responses include optional department_id, tech_stack, skills_required, languages_required, education_requirements, experience_years_min and seniority_level when available. department_id is an array of IDs; an empty array means none was identified. Required languages use lowercase ISO 639-1 codes; minimum experience is in years and may be fractional.
  • Search configurations accept job.department_ids and job.department_ids_excluded to include or exclude precise departments, independently of company sectors. Included values are combined with OR; omitted or empty lists do not restrict the search.

Fixed

  • OpenAPI lists the 197 department identifiers for both department filters, including their nullable array schemas.

v2.10 - 2026-10-14

Added

  • Export webhooks include X-Mantiks-Delivery-ID, X-Mantiks-Attempt-ID, X-Mantiks-Part and Idempotency-Key headers. Deduplicate by Idempotency-Key, which stays the same when the same delivery part is retried. A confirmed resend after acceptance creates a new delivery ID and idempotency keys.

Changed

  • Export webhook delivery retries connection failures known to occur before sending (including connection timeouts), HTTP 429 and HTTP 5xx responses automatically, up to five attempts per part, with waits of 1 minute, 5 minutes, 30 minutes and 2 hours. A valid Retry-After can extend the wait.
  • Response timeouts and interrupted attempts with uncertain receipt require an explicit manual retry because the destination may already have received the webhook. Redirects and other HTTP 4xx responses are not retried automatically, except HTTP 413, which triggers splitting into smaller parts.
  • Only HTTP 2xx responses confirm receipt. When an export is partially delivered, retries resend only parts without confirmed receipt.
  • Custom webhook headers cannot use the four delivery headers listed above.

v2.9 - 2026-10-14

Added

  • Added optional company.sizes to search configurations: employee ranges combined with OR, with the known company size entirely within the selected ranges. Use [] to clear the filter.

Changed

  • Deprecated the search filter company.size in favor of company.sizes. The legacy object and its overlap behavior remain supported. Do not send both filters active together.
  • PATCH /searches/{id}/config now preserves the search state for all configurations. Saving an inactive manual search no longer activates it; use PATCH /searches/{id}/state to activate it explicitly.

v2.8 - 2026-10-13

Added

  • Added nullable company_siret to export webhook lead payloads.
  • Added nullable lead_full_name to export webhook lead payloads.

v2.7 - 2026-10-08

Added

  • Added optional, nullable workplace_mode, contract_types (array), and work_time to job responses from
    GET /jobs/{id}, GET /jobs/{id}/history, and POST /companies/{id}/jobs.
  • Added the same fields under job in GET /exports/{id}/leads responses.
  • Added job_offer_workplace_mode, job_offer_contract_types, and job_offer_work_time to export webhook payloads.

v2.6 - 2026-10-05

Added

  • 2026-10-02 — Added optional job filters to API configuration payloads: job.contract_types_include, job.contract_types_exclude, job.work_time, and job.workplace_modes.
  • 2026-10-02 — Added company.reverse_sourcing_min_probability, an integer between 0 and 100, defaulting to 70.
  • 2026-10-02 — Added setting.launch_weekdays for daily exports (frequency=1).
    • Values range from Monday (0) to Sunday (6).
    • Omitted or null means all days.
  • 2026-10-02 — Added configurable webhook headers through setting.webhook.header_name and header_value.
    • header_value is write-only: omit it to preserve the saved value; use null to remove the header.
    • Responses expose header_value_configured instead of the secret.
  • 2026-09-30 — Added people.phone.fullenrich_api_key and the fullenrich phone strategy.
    • Added optional config_id to GET /people/{id}/reveal-phone to use a saved search’s Kaspr or FullEnrich key without consuming Mantiks credits.
  • 2026-09-16 — Added ?force_update=true to GET /jobs/{id}/reverse-sourcing-agent to retry reverse sourcing.
  • 2026-09-15 — Added optional code, details, and request_id fields to API error responses.
  • 2026-09-14 — Added POST /searches/webhook/test to send a mocked export payload to the configured webhook.
  • 2026-09-14 — Added icebreaker_settings.include_closing_salutation.
  • 2026-09-12 — Added optional profile_picture_url to person responses and exported lead contacts.
  • 2026-09-10 — Added synchronous batch endpoints:
    • POST /jobs/personas/batch
    • POST /jobs/best-fitting/batch
    • POST /jobs/reverse-sourcing-agent/batch
    • POST /people/reveal-email/batch
    • POST /people/reveal-phone/batch
    • Responses contain ordered results, with a status and response for each item.
  • 2026-09-04 — Added action to reverse-sourcing responses: nothing_found, keep_current_company, or reassign_to_company.
  • 2026-09-01 — Added optional icebreaker_settings for custom instructions, hiring questions, recruiter information, and candidate context.
  • 2026-08-28 — Added optional job.cleaned_job_title and people.icebreaker_object to exported leads.
  • 2026-08-03 — Added setting.launch_time and setting.launch_timezone for scheduled searches, and the contact generation seeded export state.
  • 2026-06-22 — Added department support to location responses.
  • 2026-06-19 — Added GET /credits/balance, returning the authenticated account’s remaining leads_credits.

Changed

  • 2026-09-22 — job_url can now be null for jobs without an application URL.
  • 2026-09-17 — Reduced synchronous batch limits from 25 to 10 items. Reverse-sourcing batches remain limited to 5 jobs.
  • 2026-09-09 — Updated sector documentation and examples to use canonical identifiers, such as software and saas_cloud_services.

Fixed

  • 2026-09-08 — Fixed credit charging for API v2 requests when optional backend arguments were omitted.

v2.5 - 2026-06-17

Added

  • Added people.persona_id to lead responses from GET /exports/{id}/leads, identifying the matching persona.

v2.4 - 2026-06-15

Added

  • Added reverse_companies to export lead API responses.
    • Available on GET /exports/{id}/leads.
    • Returned when reverse sourcing is enabled and candidate final-client companies are found.
    • Each company includes standard company fields plus optional probability and explanation.

v2.3 - 2026-06-04

Added

  • Added config.setting.enable_icebreaker to API configuration payloads.
    • When enabled, Mantiks generates an explanation and icebreaker for each lead.
  • Added config.company.enable_reverse_sourcing to API configuration payloads.
    • When enabled, Mantiks searches recruiting-sector job offers and tries to identify the final client.
  • Added the GET /jobs/{id}/reverse-sourcing-agent endpoint.
    • Starts reverse sourcing for a specific job.
    • Returns candidate companies with company_id, probability, and optional explanation.

v2.2 - 2026-04-28

Added people.persona_strategy to API configuration payloads.

API callers can now choose the persona matching behavior with the same values used internally by Mantiks:

  • best: keep the best matching persona
  • all: include all matching personas

v2.1 - 2026-04-21

Changed

  • Updated Search Config in the public API:
    • Renamed people.persona_id to people.personas_ids
    • Changed the field type from a single string to an array of persona IDs

Why

  • This aligns the API config format with the existing model, where multiple personas can already be selected.

Migration

Before:

{
  "people": {
    "persona_id": "special-best-fitting"
  }
}

After:

{
  "people": {
    "personas_ids": ["special-best-fitting"]
  }
}