---
title: "List interviews"
method: GET
path: "/interviews"
tags: ["Interviews"]
---

# List interviews

`GET /interviews`

## Request

- Base URL: `https://api.100hires.com/v2`
- URL: `https://api.100hires.com/v2/interviews`
- Auth: HTTP bearer

Returns a paginated list of interviews. Supports filtering by job, application, candidate, date, and timestamp for incremental sync.

## Query parameters

- `company_id` integer
- `job_id` integer
- `application_id` integer
- `candidate_id` integer
- `interviewer_user_id` integer
- `date` string, date
- `created_after` union
  - integer
  - string
- `updated_after` union
  - integer
  - string
- `include` string
- `page` integer
- `size` integer
- `view` 'full' | 'summary'

## Response `200`

Interview list

- InterviewListResponse
  - `interviews` Interview[], required: Array of interviews.
    - `id` integer, required: Unique identifier
    - `application_id` integer, required: ID of the related application
    - `job_id` integer, required: ID of the related job
    - `candidate_id` integer, required: ID of the related candidate
    - `url_backoffice` string, uri: Absolute backoffice URL of the candidate's interviews tab in the 100Hires recruiter app where this interview appears. Use to render deep-links in agent UIs.
    - `candidate` Candidate
      - `id` integer, required: Unique identifier
      - `alias` string, nullable: Short alphanumeric alias used in profile URLs. Use this to build candidate profile links — `https://app.100hires.com/candidate/{alias}`. Also accepted as `{id}` in API requests.
      - `url_backoffice` string, uri: Absolute backoffice URL of the candidate in the 100Hires recruiter app. Use to render deep-links in agent UIs.
      - `company_id` integer, required: ID of the company this candidate belongs to
      - `first_name` string, nullable: Candidate's first name
      - `last_name` string, nullable: Candidate's last name
      - `emails` string[], nullable: List of candidate email addresses
      - `phones` string[], nullable: List of candidate phone numbers
      - `source` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `origin` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `profile` ProfileAnswer[]: Candidate profile field answers (application form responses). Present only when `view=full` (default); omitted entirely when `view=summary` to keep list responses inside the agent context budget — a single candidate can carry dozens of free-form answers.
        - `question_id` integer, required: Question ID.
        - `question_text` string, required: Question label.
        - `value` unknown, required
      - `ip` string, nullable: IP address from which the candidate applied
      - `applications` CandidateApplicationSummary[]: Summary of all applications this candidate has across jobs
        - `id` integer, required: Application ID.
        - `job` object, required: Job summary (id, title, status).
          - `id` integer, required
          - `title` string, required
        - `stage` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
      - `created_at` integer, required: Unix timestamp (seconds)
      - `updated_at` integer, required: Unix timestamp (seconds)
      - `last_message_at` integer, nullable: Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
      - `days_since_last_message` integer, nullable: Number of whole days since the last message. Computed at request time. Null if no messages exist.
    - `application` Application
      - `id` integer, required: Unique identifier
      - `candidate_id` integer, required: ID of the candidate
      - `job_id` integer, required: ID of the job
      - `job_alias` string, nullable: Short alias of the job, usable in URLs (e.g. 79SZHfT)
      - `internal_job_id` string, nullable: Company's internal job identifier
      - `company_id` integer, required: ID of the company
      - `url_backoffice` string, uri: Absolute backoffice URL of the application's view (candidate page in this job) in the 100Hires recruiter app. Use to render deep-links in agent UIs.
      - `stage` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `status` 'active' | 'hired' | 'rejected', required: Application status. Changes via hire/reject/unreject actions.
      - `is_disqualified` boolean, required: Whether the candidate is disqualified for this application
      - `cv` ApplicationCvData: Unified attachment shape returned by apiV2 endpoints (resumes, candidate files, application attachments, message attachments, call recordings, voicemail audio in nurture campaigns). `url` is an absolute URL served by the API host (`https://api.100hires.com/v2/attachments/{category}/{uuid}/{file_name}`) and serves the raw file bytes with `Authorization: Bearer <API_KEY>`. The response on `url` sets `Content-Disposition: attachment; filename="..."` with the human-readable filename. Use `uuid` to reference the attachment in other endpoints (e.g. nurture voicemail step).
        - `uuid` string, uuid, required: Unique attachment identifier. Stable across API calls; use in referencing endpoints.
        - `url` string, uri, nullable, required: Absolute download URL (e.g. `https://api.100hires.com/v2/attachments/application/{uuid}/{file_name}`). Hit with `Authorization: Bearer <API_KEY>`.
        - `relative_time` string, required: Human-readable time since upload (e.g. `"2 days ago"`).
        - `file` AttachmentFile, required
          - `is_image` boolean, nullable, required: Whether the file is an image.
          - `orig_file_name` string, required: Original file name.
          - `file_ext` string, required: File extension.
          - `file_type` string, required: File type category.
          - `readable_size` string, required: Human-readable file size.
        - `text` string, nullable: Parsed plain-text CV content. Included only when `?include=cv.text` is requested AND `view=full` (the default). Suppressed when `view=summary` even if the include was requested — parsed CV text can be tens of KB per attachment. May be null if parsing fails or format is unsupported.
      - `rejected_at` integer, nullable: Unix timestamp (seconds)
      - `rejection_reason` IdName[], nullable: Reasons for rejection. Null if not rejected.
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `hired_at` integer, nullable: Unix timestamp (seconds)
      - `hiring_team` JobHiringTeamMember[], nullable: Team members assigned to this application's job
        - `id` integer, required: User ID.
        - `full_name` string, required: User full name.
        - `email` string, nullable: User email.
        - `role` string, nullable: Role on hiring team (e.g. hiring_manager, recruiter).
      - `custom_fields` object, nullable: Custom field values as key-value pairs
      - `ai_score` integer, nullable: AI-generated candidate fit score (0-100)
      - `ai_recommendation` string, nullable: AI-generated recommendation label (e.g. Strong, Good, Weak)
      - `ai_scoring_updated_at` integer, nullable: Unix timestamp (seconds) of the latest completed AI scoring result
      - `created_at` integer, required: Unix timestamp (seconds)
      - `updated_at` integer, required: Unix timestamp (seconds)
      - `last_message_at` integer, nullable: Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from the candidate in this application's company. Null if no messages exist.
      - `days_since_last_message` integer, nullable: Number of whole days since the last message. Computed at request time. Null if no messages exist.
      - `candidate` ApplicationCandidate
        - `id` integer, required: Unique identifier
        - `company_id` integer, required: ID of the company this candidate belongs to
        - `first_name` string, nullable: Candidate's first name
        - `last_name` string, nullable: Candidate's last name
        - `emails` string[], nullable: List of candidate email addresses
        - `phones` string[], nullable: List of candidate phone numbers
        - `source` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
        - `origin` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
        - `profile` ProfileAnswer[], required: Candidate profile field answers
          - `question_id` integer, required: Question ID.
          - `question_text` string, required: Question label.
          - `value` unknown, required
        - `created_at` integer, required: Unix timestamp (seconds)
        - `updated_at` integer, required: Unix timestamp (seconds)
        - `last_message_at` integer, nullable: Unix timestamp (seconds) of the most recent message (email or SMS) sent to or received from this candidate. Null if no messages exist.
        - `days_since_last_message` integer, nullable: Number of whole days since the last message. Computed at request time. Null if no messages exist.
        - `ip` string, nullable: IP address from which the candidate applied
      - `job` Job
        - `id` integer, required: Unique identifier
        - `alias` string, nullable: Short alphanumeric alias used in UI URLs. Use this to build job links — `https://app.100hires.com/job/{alias}/candidates/pipeline`. Also accepted as `{id}` in API requests.
        - `company_id` integer, required: ID of the company this job belongs to
        - `title` string, required: Public job title shown to candidates
        - `internal_title` string, nullable: Internal job title visible only to the hiring team
        - `internal_job_id` string, nullable: Company's internal job identifier (e.g. requisition number)
        - `description` string: Job description (HTML). Present only when `view=full` (default); omitted entirely when `view=summary` to keep list responses inside the agent context budget. Use `GET /jobs/{id}` or `view=full` to retrieve.
        - `resume_field_status` 'required' | 'optional' | 'hidden', nullable: Whether resume upload is required, optional, or hidden on the application form
        - `location` JobLocation
          - `country` string: Country.
          - `city` string: City.
          - `state` string: State or region.
          - `postal_code` string: Postal code.
          - `street_address` string: Street address.
          - `full_address` string: Full formatted address.
        - `url` string, required: Public URL of the job posting page
        - `url_backoffice` string: Backoffice URL — opens the job's pipeline view inside the recruiter app (`https://app.100hires.com/job/{alias}/candidates/pipeline`). Use this to link agent widgets / UI to the in-app job page rather than the public career page.
        - `is_remote` boolean, required: Whether this is a remote position
        - `is_hybrid` boolean, required: Whether this is a hybrid position: office days plus remote days at the job address. Never true together with is_remote.
        - `job_board_remote_scope` 'city' | 'statewide' | 'nationwide', nullable: How a remote job is listed on Indeed: city, statewide or nationwide. Null when the job is not remote.
        - `status` string, required: Job status: open, closed, draft, or archived
        - `department` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
        - `category` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
        - `employment_type` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
        - `education_level` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
        - `experience_level` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
        - `workflow_id` integer, nullable: ID of the hiring workflow (pipeline) assigned to this job
        - `workflow` IdName
          - `id` integer, required: Unique identifier.
          - `name` string, required: Display name.
        - `form_id` integer, nullable: ID of the application form candidates fill in for this job — the form attached to the job, or the company default form when the job has none attached yet (the same rule the public apply page follows). `null` only when the company has no forms. Fetch the questions with `GET /forms/{id}`. Present in both `view=full` and `view=summary`.
        - `pipeline_stages` object[], nullable: Pipeline stages for this job's workflow. Only included when `include=pipeline_stages` is specified. Suppressed when `view=summary` even if the include was requested.
          - `id` integer
          - `name` string
        - `salary_min` number, nullable: Minimum salary
        - `salary_max` number, nullable: Maximum salary
        - `salary_currency` string, nullable: Salary currency code (e.g. USD, EUR)
        - `salary_period` 'annually' | 'monthly' | 'daily' | 'hourly', nullable: Salary period
        - `hours_per_week_min` integer, nullable: Minimum hours per week
        - `hours_per_week_max` integer, nullable: Maximum hours per week
        - `indeed_posting_data` object: Indeed job board posting metadata. Present only when `view=full` (default); omitted entirely when `view=summary`.
        - `hiring_team` JobHiringTeamMember[]: Team members assigned to this job. Embedded via `include=hiring_team`. Suppressed when `view=summary` even if the include was requested.
          - `id` integer, required: User ID.
          - `full_name` string, required: User full name.
          - `email` string, nullable: User email.
          - `role` string, nullable: Role on hiring team (e.g. hiring_manager, recruiter).
        - `is_satellite` boolean: Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
        - `parent_job_id` integer, nullable: ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
        - `language` string, nullable: Locale this job's public page renders in, overriding the career site language. Null means the page follows the career site language (`GET /companies/career-site-settings`), which in turn falls back to en-US. This is the override, not the effective language. Present in both `view=full` and `view=summary`.
        - `created_at` integer, required: Unix timestamp (seconds)
        - `updated_at` integer, required: Unix timestamp (seconds)
        - `ai_scoring_criteria` AiScoringCriterion[]: AI scoring criteria configured for this job, ordered by `position` ASC. Returned as an empty array when none are configured. Present only when `view=full` (default); omitted entirely when `view=summary`.
          - `id` integer, required: Unique identifier of the criterion.
          - `title` string, nullable: Optional short label for the criterion.
          - `text` string, required: Prompt text describing what to evaluate.
          - `weight` integer, required: Relative importance of this criterion in the total score (1–10).
          - `position` integer, required: 0-based ordinal of the criterion in the job's list.
    - `job` Job
      - `id` integer, required: Unique identifier
      - `alias` string, nullable: Short alphanumeric alias used in UI URLs. Use this to build job links — `https://app.100hires.com/job/{alias}/candidates/pipeline`. Also accepted as `{id}` in API requests.
      - `company_id` integer, required: ID of the company this job belongs to
      - `title` string, required: Public job title shown to candidates
      - `internal_title` string, nullable: Internal job title visible only to the hiring team
      - `internal_job_id` string, nullable: Company's internal job identifier (e.g. requisition number)
      - `description` string: Job description (HTML). Present only when `view=full` (default); omitted entirely when `view=summary` to keep list responses inside the agent context budget. Use `GET /jobs/{id}` or `view=full` to retrieve.
      - `resume_field_status` 'required' | 'optional' | 'hidden', nullable: Whether resume upload is required, optional, or hidden on the application form
      - `location` JobLocation
        - `country` string: Country.
        - `city` string: City.
        - `state` string: State or region.
        - `postal_code` string: Postal code.
        - `street_address` string: Street address.
        - `full_address` string: Full formatted address.
      - `url` string, required: Public URL of the job posting page
      - `url_backoffice` string: Backoffice URL — opens the job's pipeline view inside the recruiter app (`https://app.100hires.com/job/{alias}/candidates/pipeline`). Use this to link agent widgets / UI to the in-app job page rather than the public career page.
      - `is_remote` boolean, required: Whether this is a remote position
      - `is_hybrid` boolean, required: Whether this is a hybrid position: office days plus remote days at the job address. Never true together with is_remote.
      - `job_board_remote_scope` 'city' | 'statewide' | 'nationwide', nullable: How a remote job is listed on Indeed: city, statewide or nationwide. Null when the job is not remote.
      - `status` string, required: Job status: open, closed, draft, or archived
      - `department` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `category` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `employment_type` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `education_level` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `experience_level` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `workflow_id` integer, nullable: ID of the hiring workflow (pipeline) assigned to this job
      - `workflow` IdName
        - `id` integer, required: Unique identifier.
        - `name` string, required: Display name.
      - `form_id` integer, nullable: ID of the application form candidates fill in for this job — the form attached to the job, or the company default form when the job has none attached yet (the same rule the public apply page follows). `null` only when the company has no forms. Fetch the questions with `GET /forms/{id}`. Present in both `view=full` and `view=summary`.
      - `pipeline_stages` object[], nullable: Pipeline stages for this job's workflow. Only included when `include=pipeline_stages` is specified. Suppressed when `view=summary` even if the include was requested.
        - `id` integer
        - `name` string
      - `salary_min` number, nullable: Minimum salary
      - `salary_max` number, nullable: Maximum salary
      - `salary_currency` string, nullable: Salary currency code (e.g. USD, EUR)
      - `salary_period` 'annually' | 'monthly' | 'daily' | 'hourly', nullable: Salary period
      - `hours_per_week_min` integer, nullable: Minimum hours per week
      - `hours_per_week_max` integer, nullable: Maximum hours per week
      - `indeed_posting_data` object: Indeed job board posting metadata. Present only when `view=full` (default); omitted entirely when `view=summary`.
      - `hiring_team` JobHiringTeamMember[]: Team members assigned to this job. Embedded via `include=hiring_team`. Suppressed when `view=summary` even if the include was requested.
        - `id` integer, required: User ID.
        - `full_name` string, required: User full name.
        - `email` string, nullable: User email.
        - `role` string, nullable: Role on hiring team (e.g. hiring_manager, recruiter).
      - `is_satellite` boolean: Whether this job is a satellite (child) of a canonical job. Satellite jobs share the candidate pipeline of their parent.
      - `parent_job_id` integer, nullable: ID of the canonical (parent) job. Null for canonical jobs. Recruiting operations should target the canonical job.
      - `language` string, nullable: Locale this job's public page renders in, overriding the career site language. Null means the page follows the career site language (`GET /companies/career-site-settings`), which in turn falls back to en-US. This is the override, not the effective language. Present in both `view=full` and `view=summary`.
      - `created_at` integer, required: Unix timestamp (seconds)
      - `updated_at` integer, required: Unix timestamp (seconds)
      - `ai_scoring_criteria` AiScoringCriterion[]: AI scoring criteria configured for this job, ordered by `position` ASC. Returned as an empty array when none are configured. Present only when `view=full` (default); omitted entirely when `view=summary`.
        - `id` integer, required: Unique identifier of the criterion.
        - `title` string, nullable: Optional short label for the criterion.
        - `text` string, required: Prompt text describing what to evaluate.
        - `weight` integer, required: Relative importance of this criterion in the total score (1–10).
        - `position` integer, required: 0-based ordinal of the criterion in the job's list.
    - `start_time` integer, required: Unix timestamp (seconds)
    - `end_time` integer, required: Unix timestamp (seconds)
    - `status` 'scheduled' | 'completed', required: Interview status
    - `interviewers` object[], required: List of interviewers participating in this interview
      - `user_id` integer
      - `name` string
      - `email` string
    - `location` string, nullable: Physical location of the interview
    - `meeting_url` string, nullable: Video conferencing or meeting URL
    - `stage` IdName
      - `id` integer, required: Unique identifier.
      - `name` string, required: Display name.
    - `created_at` integer, required: Unix timestamp (seconds)
    - `updated_at` integer, required: Unix timestamp (seconds)
  - `pagination` Pagination, required
    - `page_size` integer, required: Items per page.
    - `page_count` integer, required: Total number of pages.
    - `page` integer, required: Current page number.
    - `total_count` integer, required: Total number of items.

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `415`: Content-Type must be application/json
- `429`: Too many requests

---

[API](https://skmtc.dev/100hires/apis/100hires-api.md) · [All operations](https://skmtc.dev/100hires/apis/100hires-api/llms.txt) · [OpenAPI document](https://skmtc.dev/100hires/apis/100hires-api/revisions/e63e2d3115f7?raw)
