---
title: "Create an interviewer"
method: POST
path: "/api/v2/postings"
tags: ["Interviewers"]
---

# Create an interviewer

`POST /api/v2/postings`

Create a fully-configured interviewer with an agentic workflow. Returns the new posting ID, URLs, and a full posting receipt.

**ATS-derived templates use a two-step flow.** When `interview_template_id` references a template whose blueprint is ATS-derived, the new posting is returned in an intermediate stage (`status: "draft"`, `ats_metadata.pending_activation: true`) and does **not** begin ingesting candidates. Transition it to live by calling `POST /postings/{posting_id}/activate`, which finalizes the posting and attaches the ATS mapping in one step. Non-ATS create paths are unchanged.

## Headers

- `X-API-KEY` string, nullable
- `Authorization` string, nullable
- `X-Workspace-Id` string, nullable

## Request body

- CreatePostingRequest
  - `title` string, required — Job posting title
  - `description` string — Job posting description. Used by AI to generate interview questions.
  - `workflow` union[], nullable — Ordered list of workflow steps with optional config and questions. Required unless ``interview_template_id`` is provided. Mutually exclusive with ``interview_template_id``.
    - union
      - WebInterviewStep — Workflow step for web_interview agent.
        - `type` 'web_interview', required — Agent type.
        - `config` WebInterviewConfig — Config for the web_interview agent.
          - `instructions` string, nullable — Per-step override for AI interviewer instructions. Falls back to the posting-level 'instructions' when omitted.
          - `company_overview` string, nullable — Per-step override for company overview. Falls back to the posting-level 'company_overview' when omitted.
          - `job_overview` string, nullable — Per-step override for job overview. Falls back to the posting-level 'job_overview' when omitted.
          - `interview_process_overview` string, nullable — Per-step override for interview process overview. Falls back to the posting-level 'interview_process_overview' when omitted.
          - `company_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the company overview. Falls back to the posting-level value when omitted.
          - `job_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the job overview. Falls back to the posting-level value when omitted.
          - `interview_process_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the interview process overview. Falls back to the posting-level value when omitted.
          - `video` boolean, nullable — Enable video during interview (default: audio-only).
          - `voice_id` string, nullable — Voice ID for AI interviewer. Use GET /api/v2/voices to list available voices.
          - `phone_calls_enabled` boolean, nullable — Allow outbound phone call interviews (requires phone_number_id).
          - `interview_type` string, nullable — Interview focus: general, technical, cultural, behavioral.
          - `num_questions` integer, nullable — Number of questions (ignored if questions provided).
          - `min_evaluation_score` number, nullable — Minimum normalized score (0.0-1.0) to pass this stage.
          - `prompt_version` string, nullable — Prompt version: v1 or v2 (latest).
          - `is_multilingual` boolean, nullable — Auto-detect candidate language and respond in kind.
          - `cheat_detection_config` object, nullable — Cheat detection settings: {enabled: bool, threshold: int 0-100, types: ['tab_switching','ai_scripted_answer','multiple_people','multiple_speakers','phone_detection','unusual_delays','facial_behaviour']}
          - `web_interview_config` object, nullable — Advanced interview UI config: {show_transcript, candidate_presence_enabled, min_duration_seconds, max_duration_seconds, backdrop_image_url, avatar_image_url, intro_message, outro_message, remove_heymilo_branding}
        - `questions` CreateQuestion[], nullable — Questions for this step. If omitted, AI auto-generates.
          - `modality` string, required — Question modality: voice, resume_eligibility, resume_scoring, form, sms, voice_tags.
          - `text` string, required — Question text or criterion text.
          - `evaluation_criteria` string, nullable — How to evaluate (voice, resume_scoring).
          - `score_of_1` string, nullable — Score-1 description (voice, resume_scoring).
          - `score_of_5` string, nullable — Score-5 description (voice, resume_scoring).
          - `question_type` string, nullable — Format: open-ended|scored, textarea|dropdown, YES_NO|NUMERIC.
          - `not_scored` boolean, nullable — Ask but don't score (voice).
          - `expected_answer` string, nullable — Expected answer (sms).
          - `expected_value` integer, nullable — Expected numeric value (sms).
          - `is_dealbreaker` boolean, nullable — Disqualify on wrong answer (sms).
          - `answer` unknown
          - `is_knockout` boolean, nullable — Knockout question (form).
          - `dropdown_values` object[], nullable — Dropdown options (form).
          - `response_format` string, nullable — Response format: text|number|date|freeform (voice_tags).
          - `instructions` string, nullable — Extraction instructions (voice_tags).
          - `options` string[], nullable — Allowed options (voice_tags).
          - `score_weight` integer, nullable — Importance weighting for this question's score (0-5). Higher = more important. Must be a whole number. Applies to voice, sms, resume_eligibility, resume_scoring.
          - `min_follow_ups` integer, nullable — Minimum follow-up questions the AI must ask (voice only).
          - `max_follow_ups` integer, nullable — Maximum follow-up questions the AI may ask (voice only).
          - `additional_instructions` string, nullable — Per-question instructions for the AI interviewer (voice only).
          - `post_processing_evaluation_criteria` string, nullable — Evaluation criteria applied against the full transcript after the interview (voice only).
          - `mcq_type` string, nullable — Multiple-choice type: single or multiple (form only).
          - `operator` string, nullable — Validation operator for number/date questions: eq, neq, gt, gte, lt, lte (form only).
          - `file_types` string[], nullable — Allowed file extensions for file_upload questions (form only).
          - `allow_multiple_files` boolean, nullable — Allow uploading multiple files (form only).
          - `slider_min` number, nullable — Minimum value for slider questions (form only).
          - `slider_max` number, nullable — Maximum value for slider questions (form only).
          - `slider_step` number, nullable — Step increment for slider questions (form only).
          - `is_answer_mandated` boolean, nullable — Require an answer to this question (form only).
      - ConversationalSMSStep — Workflow step for conversational_sms agent.
        - `type` 'conversational_sms', required — Agent type.
        - `config` ConversationalSMSConfig — Config for the conversational_sms agent.
          - `instructions` string, nullable — Per-step override for AI interviewer instructions. Falls back to the posting-level 'instructions' when omitted.
          - `company_overview` string, nullable — Per-step override for company overview. Falls back to the posting-level 'company_overview' when omitted.
          - `job_overview` string, nullable — Per-step override for job overview. Falls back to the posting-level 'job_overview' when omitted.
          - `interview_process_overview` string, nullable — Per-step override for interview process overview. Falls back to the posting-level 'interview_process_overview' when omitted.
          - `company_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the company overview. Falls back to the posting-level value when omitted.
          - `job_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the job overview. Falls back to the posting-level value when omitted.
          - `interview_process_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the interview process overview. Falls back to the posting-level value when omitted.
          - `knockout_enabled` boolean, nullable — Auto-disqualify candidates who fail dealbreaker criteria.
          - `num_questions` integer, nullable — Number of SMS criteria (ignored if criteria provided).
          - `intro_message` string, nullable — Custom intro message. Supports {{candidate_name}} and {{job_title}} variables.
          - `disqualification_message` string, nullable — Message sent when candidate fails a dealbreaker.
          - `follow_up_message` string, nullable — Custom follow-up/nudge message.
          - `hop_on_call_message` string, nullable — Message for phone/video call invitation.
          - `cooldown_period_hrs` integer, nullable — Hours to wait before sending a follow-up nudge.
          - `max_nudge_amount` integer, nullable — Maximum number of follow-up nudges.
          - `blackout_period` object, nullable — No-message window: {enabled: bool, timezone: str (IANA), start_hour: 0-23, end_hour: 1-24}
        - `questions` CreateQuestion[], nullable — Criteria for this step. If omitted, AI auto-generates.
          - `modality` string, required — Question modality: voice, resume_eligibility, resume_scoring, form, sms, voice_tags.
          - `text` string, required — Question text or criterion text.
          - `evaluation_criteria` string, nullable — How to evaluate (voice, resume_scoring).
          - `score_of_1` string, nullable — Score-1 description (voice, resume_scoring).
          - `score_of_5` string, nullable — Score-5 description (voice, resume_scoring).
          - `question_type` string, nullable — Format: open-ended|scored, textarea|dropdown, YES_NO|NUMERIC.
          - `not_scored` boolean, nullable — Ask but don't score (voice).
          - `expected_answer` string, nullable — Expected answer (sms).
          - `expected_value` integer, nullable — Expected numeric value (sms).
          - `is_dealbreaker` boolean, nullable — Disqualify on wrong answer (sms).
          - `answer` unknown
          - `is_knockout` boolean, nullable — Knockout question (form).
          - `dropdown_values` object[], nullable — Dropdown options (form).
          - `response_format` string, nullable — Response format: text|number|date|freeform (voice_tags).
          - `instructions` string, nullable — Extraction instructions (voice_tags).
          - `options` string[], nullable — Allowed options (voice_tags).
          - `score_weight` integer, nullable — Importance weighting for this question's score (0-5). Higher = more important. Must be a whole number. Applies to voice, sms, resume_eligibility, resume_scoring.
          - `min_follow_ups` integer, nullable — Minimum follow-up questions the AI must ask (voice only).
          - `max_follow_ups` integer, nullable — Maximum follow-up questions the AI may ask (voice only).
          - `additional_instructions` string, nullable — Per-question instructions for the AI interviewer (voice only).
          - `post_processing_evaluation_criteria` string, nullable — Evaluation criteria applied against the full transcript after the interview (voice only).
          - `mcq_type` string, nullable — Multiple-choice type: single or multiple (form only).
          - `operator` string, nullable — Validation operator for number/date questions: eq, neq, gt, gte, lt, lte (form only).
          - `file_types` string[], nullable — Allowed file extensions for file_upload questions (form only).
          - `allow_multiple_files` boolean, nullable — Allow uploading multiple files (form only).
          - `slider_min` number, nullable — Minimum value for slider questions (form only).
          - `slider_max` number, nullable — Maximum value for slider questions (form only).
          - `slider_step` number, nullable — Step increment for slider questions (form only).
          - `is_answer_mandated` boolean, nullable — Require an answer to this question (form only).
      - ResumeStep — Workflow step for resume screening agent.
        - `type` 'resume', required — Agent type.
        - `config` ResumeConfig — Config for the resume screening agent.
          - `instructions` string, nullable — Per-step override for AI interviewer instructions. Falls back to the posting-level 'instructions' when omitted.
          - `company_overview` string, nullable — Per-step override for company overview. Falls back to the posting-level 'company_overview' when omitted.
          - `job_overview` string, nullable — Per-step override for job overview. Falls back to the posting-level 'job_overview' when omitted.
          - `interview_process_overview` string, nullable — Per-step override for interview process overview. Falls back to the posting-level 'interview_process_overview' when omitted.
          - `company_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the company overview. Falls back to the posting-level value when omitted.
          - `job_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the job overview. Falls back to the posting-level value when omitted.
          - `interview_process_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the interview process overview. Falls back to the posting-level value when omitted.
          - `knockout_enabled` boolean, nullable — Auto-reject candidates failing eligibility criteria.
          - `min_evaluation_score` number, nullable — Minimum normalized score on scoring criteria.
          - `mandatory` boolean, nullable — Require resume upload to proceed.
          - `num_eligibility_questions` integer, nullable — Number of pass/fail eligibility criteria.
          - `num_criteria_questions` integer, nullable — Number of scored criteria.
        - `questions` CreateQuestion[], nullable — Criteria for this step. If omitted, AI auto-generates.
          - `modality` string, required — Question modality: voice, resume_eligibility, resume_scoring, form, sms, voice_tags.
          - `text` string, required — Question text or criterion text.
          - `evaluation_criteria` string, nullable — How to evaluate (voice, resume_scoring).
          - `score_of_1` string, nullable — Score-1 description (voice, resume_scoring).
          - `score_of_5` string, nullable — Score-5 description (voice, resume_scoring).
          - `question_type` string, nullable — Format: open-ended|scored, textarea|dropdown, YES_NO|NUMERIC.
          - `not_scored` boolean, nullable — Ask but don't score (voice).
          - `expected_answer` string, nullable — Expected answer (sms).
          - `expected_value` integer, nullable — Expected numeric value (sms).
          - `is_dealbreaker` boolean, nullable — Disqualify on wrong answer (sms).
          - `answer` unknown
          - `is_knockout` boolean, nullable — Knockout question (form).
          - `dropdown_values` object[], nullable — Dropdown options (form).
          - `response_format` string, nullable — Response format: text|number|date|freeform (voice_tags).
          - `instructions` string, nullable — Extraction instructions (voice_tags).
          - `options` string[], nullable — Allowed options (voice_tags).
          - `score_weight` integer, nullable — Importance weighting for this question's score (0-5). Higher = more important. Must be a whole number. Applies to voice, sms, resume_eligibility, resume_scoring.
          - `min_follow_ups` integer, nullable — Minimum follow-up questions the AI must ask (voice only).
          - `max_follow_ups` integer, nullable — Maximum follow-up questions the AI may ask (voice only).
          - `additional_instructions` string, nullable — Per-question instructions for the AI interviewer (voice only).
          - `post_processing_evaluation_criteria` string, nullable — Evaluation criteria applied against the full transcript after the interview (voice only).
          - `mcq_type` string, nullable — Multiple-choice type: single or multiple (form only).
          - `operator` string, nullable — Validation operator for number/date questions: eq, neq, gt, gte, lt, lte (form only).
          - `file_types` string[], nullable — Allowed file extensions for file_upload questions (form only).
          - `allow_multiple_files` boolean, nullable — Allow uploading multiple files (form only).
          - `slider_min` number, nullable — Minimum value for slider questions (form only).
          - `slider_max` number, nullable — Maximum value for slider questions (form only).
          - `slider_step` number, nullable — Step increment for slider questions (form only).
          - `is_answer_mandated` boolean, nullable — Require an answer to this question (form only).
      - FormStep — Workflow step for form screening agent.
        - `type` 'form', required — Agent type.
        - `config` FormConfig — Config for the form screening agent.
          - `instructions` string, nullable — Per-step override for AI interviewer instructions. Falls back to the posting-level 'instructions' when omitted.
          - `company_overview` string, nullable — Per-step override for company overview. Falls back to the posting-level 'company_overview' when omitted.
          - `job_overview` string, nullable — Per-step override for job overview. Falls back to the posting-level 'job_overview' when omitted.
          - `interview_process_overview` string, nullable — Per-step override for interview process overview. Falls back to the posting-level 'interview_process_overview' when omitted.
          - `company_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the company overview. Falls back to the posting-level value when omitted.
          - `job_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the job overview. Falls back to the posting-level value when omitted.
          - `interview_process_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — Per-step override for how the AI interviewer delivers the interview process overview. Falls back to the posting-level value when omitted.
          - `knockout_enabled` boolean, nullable — Auto-disqualify on knockout question failure.
        - `questions` CreateQuestion[], nullable — Questions for this step. If omitted, AI auto-generates.
          - `modality` string, required — Question modality: voice, resume_eligibility, resume_scoring, form, sms, voice_tags.
          - `text` string, required — Question text or criterion text.
          - `evaluation_criteria` string, nullable — How to evaluate (voice, resume_scoring).
          - `score_of_1` string, nullable — Score-1 description (voice, resume_scoring).
          - `score_of_5` string, nullable — Score-5 description (voice, resume_scoring).
          - `question_type` string, nullable — Format: open-ended|scored, textarea|dropdown, YES_NO|NUMERIC.
          - `not_scored` boolean, nullable — Ask but don't score (voice).
          - `expected_answer` string, nullable — Expected answer (sms).
          - `expected_value` integer, nullable — Expected numeric value (sms).
          - `is_dealbreaker` boolean, nullable — Disqualify on wrong answer (sms).
          - `answer` unknown
          - `is_knockout` boolean, nullable — Knockout question (form).
          - `dropdown_values` object[], nullable — Dropdown options (form).
          - `response_format` string, nullable — Response format: text|number|date|freeform (voice_tags).
          - `instructions` string, nullable — Extraction instructions (voice_tags).
          - `options` string[], nullable — Allowed options (voice_tags).
          - `score_weight` integer, nullable — Importance weighting for this question's score (0-5). Higher = more important. Must be a whole number. Applies to voice, sms, resume_eligibility, resume_scoring.
          - `min_follow_ups` integer, nullable — Minimum follow-up questions the AI must ask (voice only).
          - `max_follow_ups` integer, nullable — Maximum follow-up questions the AI may ask (voice only).
          - `additional_instructions` string, nullable — Per-question instructions for the AI interviewer (voice only).
          - `post_processing_evaluation_criteria` string, nullable — Evaluation criteria applied against the full transcript after the interview (voice only).
          - `mcq_type` string, nullable — Multiple-choice type: single or multiple (form only).
          - `operator` string, nullable — Validation operator for number/date questions: eq, neq, gt, gte, lt, lte (form only).
          - `file_types` string[], nullable — Allowed file extensions for file_upload questions (form only).
          - `allow_multiple_files` boolean, nullable — Allow uploading multiple files (form only).
          - `slider_min` number, nullable — Minimum value for slider questions (form only).
          - `slider_max` number, nullable — Maximum value for slider questions (form only).
          - `slider_step` number, nullable — Step increment for slider questions (form only).
          - `is_answer_mandated` boolean, nullable — Require an answer to this question (form only).
  - `interview_template_id` string, nullable — Optional interview template ID to use as the starting point for this posting. When provided, the template's blueprint posting is cloned (workflow, questions, criteria, agent settings, and any linked configurations are copied) and any other fields supplied in this request override the cloned values (title, description, root-level configs, integration IDs, metadata, etc.). Mutually exclusive with ``workflow``: provide one or the other.
  - `name` string, nullable — Internal posting slug
  - `language` string — Interview language (ISO 639-1)
  - `interviewer_name` string — AI interviewer display name
  - `instructions` string — Instructions for the AI interviewer
  - `company_overview` string — Brief overview of the company
  - `job_overview` string — Brief overview of the role
  - `interview_process_overview` string, nullable — Process overview shared with agents.
  - `company_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — How the AI interviewer delivers the company overview. 'exact_delivery' (verbatim, default), 'summarized_delivery' (concise candidate-friendly summary), 'reference_only' (used only to answer candidate questions), 'silent_reference' (used internally, never shared with candidate).
  - `job_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — How the AI interviewer delivers the job overview. Same options as company_overview_delivery_mode.
  - `interview_process_overview_delivery_mode` 'exact_delivery' | 'summarized_delivery' | 'reference_only' | 'silent_reference', nullable — How the AI interviewer delivers the interview process overview. Same options as company_overview_delivery_mode.
  - `phone_number_id` string, nullable — Phone number ID for SMS and voice agents.
  - `sender_email_id` string, nullable — Sender email ID for candidate communications.
  - `email_template_group_id` string, nullable — Email template group ID for candidate emails.
  - `design_template_group_id` string, nullable — Design template group ID for interview UI branding.
  - `redirect_url` string, nullable — URL to redirect candidates after completing the interview.
  - `scheduling_url` string, nullable — Calendar scheduling URL for shortlisted candidates.
  - `deadline` string, nullable — ISO 8601 deadline for the posting (e.g. '2025-03-15T00:00:00Z'). If omitted or null, defaults to one calendar month after creation.
  - `allow_sms_comms` boolean, nullable — Allow sending SMS invitations to candidates.
  - `max_retakes` integer, nullable — Max retake attempts (0-5).
  - `retake_cooldown_days` number, nullable — Days a candidate must wait between retake attempts.
  - `email_report_to_candidate` boolean, nullable — Email a performance report link to candidates after completion.
  - `metadata` object, nullable — Set of key-value pairs for storing additional information on the interviewer. Up to 50 keys, each key max 40 chars, each value max 500 chars.
  - `team_ids` string[], nullable — Team IDs to assign this interviewer to on creation. Use GET /api/v2/teams to list available teams. Every ID is validated before the interviewer is created, so an unknown ID returns 400 and creates nothing. Requires the Teams feature to be enabled for the workspace. Note: assigning an interviewer to any team restricts dashboard visibility to members of those teams — an interviewer with no team is visible to the whole workspace.

## Response `201`

Successful Response

- SingleResponseCreatePostingResponse
  - `data` CreatePostingResponse, required — Response after successfully creating a posting.
    - `object` 'posting' — Object type identifier.
    - `id` string, required — Unique posting identifier.
    - `status` string, required — Posting status after creation.
    - `urls` PostingURLs, required — All URLs associated with a posting.
      - `candidate_url` string, nullable — Candidate-facing interview URL.
      - `ingestion_url_key` string, nullable — URL key for candidate ingestion. Use with POST /intake/v1/candidate/{key}.
      - `review_url` string, nullable — Admin dashboard review URL.
    - `created_at` number, required — Unix timestamp when the posting was created.
    - `posting` PostingResponse — A job posting with its full agentic workflow configuration. A posting represents a complete hiring pipeline — it defines the job, the AI agents involved, and how candidates progress through each screening step.
      - `object` 'posting' — Object type identifier.
      - `id` string, required — Unique posting identifier.
      - `company_id` string, required — ID of the company that owns this posting.
      - `title` string, required — Job title displayed to candidates.
      - `name` string, nullable — URL-friendly slug for the posting.
      - `description` string, required — Full job description text.
      - `language` string, nullable — BCP-47 language code.
      - `interviewer_name` string, nullable — Display name of the AI interviewer.
      - `status` string, required — Posting status: 'draft', 'active', 'expired', 'archived'.
      - `finalized` boolean, required — Whether the posting has been finalized/activated.
      - `archived` boolean, required — Whether the posting is archived.
      - `test_posting` boolean, required — Whether this is a test posting.
      - `workflow` WorkflowStep[] — Ordered list of agentic workflow steps.
        - `id` string, nullable — Unique identifier for this workflow step.
        - `type` string, required — Agent type: 'web_interview', 'conversational_sms', 'resume', 'form'.
        - `order` integer, required — Position in the workflow pipeline (1-based).
        - `config` object — Agent-specific configuration. Shape varies by type. See GET /api/v2/schemas/agents for details.
      - `urls` PostingURLs — All URLs associated with a posting.
        - `candidate_url` string, nullable — Candidate-facing interview URL.
        - `ingestion_url_key` string, nullable — URL key for candidate ingestion. Use with POST /intake/v1/candidate/{key}.
        - `review_url` string, nullable — Admin dashboard review URL.
      - `deadline` number, nullable — Unix timestamp deadline for the posting.
      - `redirect_url` string, nullable — URL candidates are redirected to after completing the interview.
      - `scheduling_url` string, nullable — Calendar scheduling URL for shortlisted candidates.
      - `max_retakes` integer, nullable — Maximum number of interview retakes allowed.
      - `allow_sms_comms` boolean, nullable — Whether SMS communications are enabled.
      - `instructions` string, nullable — General instructions for the AI interviewer shared with agents.
      - `company_overview` string, nullable — Overview of the company shared with agents.
      - `job_overview` string, nullable — Overview of the job/role shared with agents.
      - `interview_process_overview` string, nullable — Overview of the interview process shared with agents.
      - `company_overview_delivery_mode` string, nullable — How the AI interviewer delivers the company overview.
      - `job_overview_delivery_mode` string, nullable — How the AI interviewer delivers the job overview.
      - `interview_process_overview_delivery_mode` string, nullable — How the AI interviewer delivers the interview process overview.
      - `phone_number_id` string, nullable — ID of the phone number used for outbound calls.
      - `sender_email_id` string, nullable — ID of the sender email configuration.
      - `email_template_group_id` string, nullable — ID of the email template group.
      - `design_template_group_id` string, nullable — ID of the design template group.
      - `retake_cooldown_days` number, nullable — Cooldown period in days before a candidate can retake.
      - `email_report_to_candidate` boolean, nullable — Whether to email the interview report to the candidate.
      - `ats_metadata` object, nullable — ATS integration metadata for postings derived from an ATS (Import-from-ATS flow or `createPosting` with an ATS-derived `interview_template_id`). Null for postings not connected to an ATS. Common fields: - `source` (string): how the posting was created, e.g. `job_sync`. - `ats_name` (string): identifier of the ATS, e.g. `workable`, `bullhorn`. - `ats_job_id` (string): ID of the ATS job that backs this posting. - `ats_job_posting_id` (string, optional): ATS-side job-posting ID when distinct from `ats_job_id`. - `integration_id` (string, optional): heymilo ATS integration ID. - `job_ids` (string[], optional): ATS job IDs included in the mapping config. - `pending_activation` (bool): `true` while the agent is in the intermediate stage created by `createPosting` / `clonePosting` for ATS-derived postings. Candidate ingestion does not begin until the caller transitions out of this stage by calling `POST /postings/{posting_id}/activate`, which finalizes the posting and attaches the ATS mapping in one step. - `mapping_activated_at`, `mapping_activated_by` (read-only): audit fields stamped when the ATS mapping was attached. - `mapping_deactivated_at`, `mapping_deactivated_by` (read-only): audit fields stamped when the ATS mapping was last paused.
      - `metadata` object, nullable — Set of key-value pairs for storing additional information. Up to 50 keys, each key max 40 chars, each value max 500 chars.
      - `team_ids` string[], nullable — Team IDs this interviewer is assigned to. Null when Teams is not enabled for the workspace. An empty array means Teams is enabled but the interviewer is not assigned to any team — it is then visible to the whole workspace.
      - `created_at` number, nullable — Unix timestamp when the posting was created.
      - `updated_at` number, nullable — Unix timestamp when the posting was last updated.
  - `meta` object, nullable — Optional metadata. Shape varies by endpoint.

## Other responses

- `401` — Invalid or missing API key.
- `404` — Resource not found.
- `422` — Validation Error
- `429` — Rate limit exceeded.

---

[API](https://skmtc.net/heymilo/apis/heymilo-public-api.md) · [All operations](https://skmtc.net/heymilo/apis/heymilo-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/heymilo/heymilo-public-api/revisions/5e07b657706b/schema)
