> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ribbon.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Post interview

> Create an interview session. The interview will be created in the same team as the interview flow.



## OpenAPI

````yaml post /v1/interviews
openapi: 3.0.2
info:
  title: Ribbon API
  version: v1
  description: API for Ribbon
servers:
  - url: https://app.ribbon.ai/be-api/
  - url: https://staging.ribbon.ai/be-api/
security: []
tags:
  - name: Ribbon Public API
    description: ''
  - name: private_routes
    description: ''
paths:
  /v1/interviews:
    post:
      tags:
        - Ribbon Public API
      summary: Post interview
      description: >-
        Create an interview session. The interview will be created in the same
        team as the interview flow.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostInterviewRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostInterviewResponse'
        '403':
          description: >-
            The interview flow found does not belong to authenticated
            organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: No interview flow found with provided interview_flow_id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          $ref: '#/components/responses/DEFAULT_ERROR'
      security:
        - BearerAuth: []
components:
  schemas:
    PostInterviewRequest:
      type: object
      properties:
        interview_flow_id:
          type: string
          description: The interview flow ID.
        interviewee_email_address:
          type: string
          default: null
          description: >-
            The interviewee email address. This is used to identify the
            interviewee on the Ribbon platform. If not provided, this interview
            will not appear on the Ribbon platform
          nullable: true
        interviewee_first_name:
          type: string
          default: null
          description: The interviewee first name.
          nullable: true
        interviewee_last_name:
          type: string
          default: null
          description: The interviewee last name.
          nullable: true
        assigned_recruiter_id:
          type: string
          default: null
          pattern: >-
            ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
          description: >-
            The ID of the team member to assign this interview to. Must belong
            to the same team as the interview flow. If provided, the returned
            interview_link will include assignedRecruiterId as a query
            parameter. Use GET /team-members to retrieve valid team member IDs.
          nullable: true
      required:
        - interview_flow_id
      additionalProperties: false
    PostInterviewResponse:
      type: object
      properties:
        interview_id:
          type: string
          description: The ID of the created interview.
        interview_link:
          type: string
          description: The single-use link to begin and conduct the interview.
        hint:
          type: string
          default: null
          description: Helpful hint about interview visibility.
          nullable: true
      required:
        - interview_id
        - interview_link
      additionalProperties: false
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: The error message
        code:
          type: integer
          description: The status code
        status:
          type: string
          description: The status
      required:
        - code
        - message
        - status
      additionalProperties: false
    Error:
      type: object
      properties:
        code:
          type: integer
          description: Error code
        status:
          type: string
          description: Error name
        message:
          type: string
          description: Error message
        errors:
          type: object
          description: Errors
          additionalProperties: {}
      additionalProperties: false
  responses:
    DEFAULT_ERROR:
      description: Default error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: UUID
      description: >-
        Provide your API key UUID in the 'Authorization' header prefixed with
        'Bearer '.

        Example: 'Authorization: Bearer 123e4567-e89b-12d3-a456-426614174000'

````