{"openapi":"3.1.0","info":{"title":"Raconte API","description":"REST API for managing interviews and invitations. Authenticate with an API key created in your organization settings, sent as `Authorization: Bearer <key>` (an `x-api-key: <key>` header is also accepted).\n\n**Versioning.** Every path is prefixed with `/v1`, the current version. A breaking change gets a new version segment rather than a change to this one. A retired version answers with the `Deprecation` (RFC 9745) and `Sunset` (RFC 8594) headers, declared on every response below, for at least six months before it stops responding. Policy: https://raconte.ai/en/developers#versioning-and-deprecation\n\n**Rate limit.** Every response carries the IETF `RateLimit` headers. Past the quota the API answers `429` with `Retry-After`. See https://raconte.ai/en/developers.","version":"1.0","contact":{}},"tags":[{"name":"@raconte","description":""}],"servers":[{"url":"https://api.raconte.ai","description":"Production"}],"paths":{"/v1/interviews":{"post":{"description":"Creates an interview from a prompt. Without `invitees`, a single shareable invitation is created and its link is returned. With `invitees`, one invitation is created and emailed per invitee. Omitted `locale` and `voiceId` fall back to the organization defaults.","operationId":"InterviewsController_create","summary":"Create an interview","tags":["Interviews"],"parameters":[],"requestBody":{"required":true,"description":"Schema for creating an interview. When invitees is provided, one invitation is created (and sent) per invitee. Otherwise a single initial invitation is created, pre-filled with the email when given. When locale or voiceId is omitted, the organization default (Settings > Interviews) is used, falling back to the app default language and the first voice for that language.","content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":10},"title":{"type":"string"},"intro":{"type":"string"},"firstMessage":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"invitees":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"],"additionalProperties":false,"title":"InterviewInvitee","description":"One invitee to create an invitation for. Needs an email."}},"locale":{"type":"string"},"voiceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["prompt"],"additionalProperties":false,"title":"CreateInterviewSchema","description":"Schema for creating an interview. When invitees is provided, one invitation is created (and sent) per invitee. Otherwise a single initial invitation is created, pre-filled with the email when given. When locale or voiceId is omitted, the organization default (Settings > Interviews) is used, falling back to the app default language and the first voice for that language."}}}},"responses":{"200":{"description":"Response for interview creation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedInterviewsResponse"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"description":"Returns the interviews of the organization, each with its invitation counts per status. Pass `archived=true` to list the archived ones instead.","operationId":"InterviewsController_list","summary":"List interviews","tags":["Interviews"],"parameters":[{"name":"archived","required":false,"in":"query","schema":{"description":"When true, returns archived interviews only. When omitted or false, returns active (non-archived) interviews.","example":false,"type":"boolean"},"description":"When true, returns archived interviews only. When omitted or false, returns active (non-archived) interviews."}],"responses":{"200":{"description":"Schema for a list of interviews","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewListSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}":{"get":{"description":"Returns one interview with its prompt, settings and non-archived invitations.","operationId":"InterviewsController_getOne","summary":"Get an interview","tags":["Interviews"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"responses":{"200":{"description":"Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to (archived excluded; deactivated/cancelled still listed). invitationsCount is the number of live invitations (archived and deactivated excluded): 1 means single mode, more than 1 means bulk.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"description":"Updates the prompt, title, intro, first message, language, voice or limits of an interview. Only the fields present in the body are changed.","operationId":"InterviewsController_update","summary":"Update an interview","tags":["Interviews"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"requestBody":{"required":true,"description":"Schema for updating an interview definition. Recipient fields live on invitations and are updated via the invitations endpoints.","content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"prompt":{"type":"string","minLength":10},"intro":{"type":"string"},"firstMessage":{"type":"string"},"locale":{"type":"string","minLength":2,"maxLength":10},"maxMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxResponses":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"disableOrgSystemPrompt":{"type":"boolean"},"voiceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false,"title":"UpdateInterviewSchema","description":"Schema for updating an interview definition. Recipient fields live on invitations and are updated via the invitations endpoints."}}}},"responses":{"200":{"description":"Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to (archived excluded; deactivated/cancelled still listed). invitationsCount is the number of live invitations (archived and deactivated excluded): 1 means single mode, more than 1 means bulk.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}/regenerate-intro":{"post":{"description":"Asks the AI for a new intro message from the current prompt, and stores it on the interview.","operationId":"InterviewsController_regenerateIntro","summary":"Regenerate the intro message","tags":["Interviews"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"responses":{"200":{"description":"Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to (archived excluded; deactivated/cancelled still listed). invitationsCount is the number of live invitations (archived and deactivated excluded): 1 means single mode, more than 1 means bulk.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}/regenerate-first-message":{"post":{"description":"Asks the AI for a new opening question from the current prompt, and stores it on the interview.","operationId":"InterviewsController_regenerateFirstMessage","summary":"Regenerate the first message","tags":["Interviews"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"responses":{"200":{"description":"Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to (archived excluded; deactivated/cancelled still listed). invitationsCount is the number of live invitations (archived and deactivated excluded): 1 means single mode, more than 1 means bulk.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}/archive":{"post":{"description":"Hides the interview from the default listings. Its invitations and transcripts are kept and it can be restored.","operationId":"InterviewsController_archive","summary":"Archive an interview","tags":["Interviews"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"responses":{"200":{"description":"Response for archiving an interview","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArchiveInterviewResponse"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}/restore":{"post":{"description":"Brings an archived interview back into the default listings.","operationId":"InterviewsController_restore","summary":"Restore an archived interview","tags":["Interviews"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"responses":{"200":{"description":"Response for restoring an archived interview","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestoreInterviewResponse"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}/logs":{"get":{"description":"Returns the dated events recorded on the interview and its invitations (sends, reminders, completions).","operationId":"InterviewsController_getLogs","summary":"List the activity log of an interview","tags":["Interviews"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"responses":{"200":{"description":"Chronological history of events on an interview, most recent first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewLogListSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}/invitations":{"get":{"description":"Returns every invitation of the interview with its status and recipient, without the transcript messages.","operationId":"InterviewInvitationsController_list","summary":"List the invitations of an interview","tags":["InterviewInvitations"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"responses":{"200":{"description":"List of interview invitations belonging to an interview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationListSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"description":"Creates one invitation on an existing interview, and sends it right away when an email address is given.","operationId":"InterviewInvitationsController_create","summary":"Create an invitation","tags":["InterviewInvitations"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"requestBody":{"required":true,"description":"Optional invitee details for a new invitation. Every field is optional: with an empty body you get a blank, ready-to-share invitation whose link is `<app>/i/{slug}` (the `slug` is returned in the response). Providing name or email only pre-fills the invitation, it is not sent here: deliver it with the send endpoint, or just share the link.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"additionalProperties":false,"title":"CreateInterviewInvitationSchema","description":"Optional invitee details for a new invitation. Every field is optional: with an empty body you get a blank, ready-to-share invitation whose link is `<app>/i/{slug}` (the `slug` is returned in the response). Providing name or email only pre-fills the invitation, it is not sent here: deliver it with the send endpoint, or just share the link."}}}},"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}/invitations/bulk":{"post":{"description":"Creates and sends one invitation per invitee in a single call. A delivery failure on one invitee does not stop the others.","operationId":"InterviewInvitationsController_createBulk","summary":"Create invitations in bulk","tags":["InterviewInvitations"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"requestBody":{"required":true,"description":"Bulk create N interview invitations on an existing interview and dispatch each one by email right away. Each invitee row must carry an email.","content":{"application/json":{"schema":{"type":"object","properties":{"invitees":{"minItems":1,"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"],"additionalProperties":false,"title":"BulkInterviewInviteeSchema","description":"A single invitee row in a bulk create payload. An email is required per row."}}},"required":["invitees"],"additionalProperties":false,"title":"CreateBulkInterviewInvitationsSchema","description":"Bulk create N interview invitations on an existing interview and dispatch each one by email right away. Each invitee row must carry an email."}}}},"responses":{"200":{"description":"List of interview invitations belonging to an interview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationListSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}":{"get":{"description":"Returns one invitation with its full message list, per-message sentiment and AI summary once the call has happened.","operationId":"InterviewInvitationsController_getOne","summary":"Get an invitation with its transcript","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"description":"Updates the recipient name or email of an invitation. Only the fields present in the body are changed.","operationId":"InterviewInvitationsController_update","summary":"Update an invitation","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"requestBody":{"required":true,"description":"Schema for updating the invitee display name on an interview invitation. The recipient email cannot be changed here: it is set when sending (see the send endpoint), so the contact is never altered without dispatching the invitation.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":false,"title":"UpdateInterviewInvitationSchema","description":"Schema for updating the invitee display name on an interview invitation. The recipient email cannot be changed here: it is set when sending (see the send endpoint), so the contact is never altered without dispatching the invitation."}}}},"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}/send":{"post":{"description":"Emails the invitation link to the given address, and records the send in the activity log.","operationId":"InterviewInvitationsController_send","summary":"Send an invitation by email","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"requestBody":{"required":true,"description":"Schema for sending an interview invitation by email. The email is required.","content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"],"additionalProperties":false,"title":"SendInterviewInvitationSchema","description":"Schema for sending an interview invitation by email. The email is required."}}}},"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}/cancel":{"post":{"description":"Closes the invitation so its link stops working. No further reminder is sent.","operationId":"InterviewInvitationsController_cancel","summary":"Cancel an invitation","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}/reactivate":{"post":{"description":"Reopens a cancelled invitation so its link works again, and re-sends the email when `sendEmail` is true.","operationId":"InterviewInvitationsController_reactivate","summary":"Reactivate a cancelled invitation","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"requestBody":{"required":true,"description":"Options for reopening/restoring an invitation. When reopening a completed invitation (it moves to the reopened status), set sendEmail to true to email the invitee a resume link (the resume-adapted email). Ignored when restoring a cancelled invitation back to ready, and when the invitation has no recipient email. Defaults to no email when omitted.","content":{"application/json":{"schema":{"type":"object","properties":{"sendEmail":{"type":"boolean"}},"additionalProperties":false,"title":"ReactivateInterviewInvitationSchema","description":"Options for reopening/restoring an invitation. When reopening a completed invitation (it moves to the reopened status), set sendEmail to true to email the invitee a resume link (the resume-adapted email). Ignored when restoring a cancelled invitation back to ready, and when the invitation has no recipient email. Defaults to no email when omitted."}}}},"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}/complete":{"post":{"description":"Finalizes an invitation by hand, for a call the automatic sweeps did not close.","operationId":"InterviewInvitationsController_complete","summary":"Mark an invitation as completed","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}/archive":{"post":{"description":"Hides the invitation from the default listings, keeping its transcript.","operationId":"InterviewInvitationsController_archive","summary":"Archive an invitation","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}/restore":{"post":{"description":"Brings an archived invitation back into the default listings.","operationId":"InterviewInvitationsController_restore","summary":"Restore an archived invitation","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"responses":{"200":{"description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewInvitationSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}/logs":{"get":{"description":"Returns the dated events recorded on this invitation (sends, reminders, start, completion).","operationId":"InterviewInvitationsController_getLogs","summary":"List the activity log of an invitation","tags":["InterviewInvitations"],"parameters":[{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"responses":{"200":{"description":"Chronological history of events on an interview, most recent first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewLogListSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/invitations/{invitationId}/messages/{messageId}/audio-url":{"get":{"description":"Returns a short-lived presigned URL to the audio of one transcript message. Fetch the URL before it expires.","operationId":"InterviewInvitationsController_getMessageAudioUrl","summary":"Get the audio recording of a message","tags":["InterviewInvitations"],"parameters":[{"name":"messageId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview message UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview message UUID"},{"name":"invitationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Interview invitation UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Interview invitation UUID"}],"responses":{"200":{"description":"Short-lived presigned URL for the audio attached to an interview message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewMessageAudioUrlSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/interviews/{id}/share":{"get":{"description":"Returns the public share link of the interview, creating it on first call, with its access rules and the number of interviews it has started.","operationId":"InterviewShareController_get","summary":"Get the share link of an interview","tags":["InterviewShare"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"responses":{"200":{"description":"Configuration of an interview's public share surface (the reusable link). url is the full public URL the host shares. interviewsStartedCount is how many invitations this surface has minted so far (used against maxInterviews). accessCode and allowedEmailDomains are returned to the host so they can review them; they gate the visitor-facing form.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewShareSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"description":"Enables or disables the share link and updates its access rules (access code, allowed email domains).","operationId":"InterviewShareController_update","summary":"Update the share link of an interview","tags":["InterviewShare"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"UUID identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"UUID identifier"}],"requestBody":{"required":true,"description":"Partial update of an interview's public share surface. Omit a field to leave it unchanged; pass null on a nullable field (maxInterviews, maxPerIpPerDay, opensAt, closesAt, accessCode, allowedEmailDomains) to clear it. dedupeByContact only takes effect when the email field is required.","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"askName":{"type":"string","enum":["off","optional","required"],"title":"FieldRequirement","description":"Per-field policy of the public share form: off (not asked), optional (asked, may be blank), required (asked, must be filled)."},"askEmail":{"type":"string","enum":["off","optional","required"],"title":"FieldRequirement","description":"Per-field policy of the public share form: off (not asked), optional (asked, may be blank), required (asked, must be filled)."},"maxInterviews":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"maxPerIpPerDay":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"opensAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"closesAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"dedupeByContact":{"type":"boolean"},"accessCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"allowedEmailDomains":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"additionalProperties":false,"title":"UpdateInterviewShareSchema","description":"Partial update of an interview's public share surface. Omit a field to leave it unchanged; pass null on a nullable field (maxInterviews, maxPerIpPerDay, opensAt, closesAt, accessCode, allowedEmailDomains) to clear it. dedupeByContact only takes effect when the email field is required."}}}},"responses":{"200":{"description":"Configuration of an interview's public share surface (the reusable link). url is the full public URL the host shares. interviewsStartedCount is how many invitations this surface has minted so far (used against maxInterviews). accessCode and allowedEmailDomains are returned to the host so they can review them; they gate the visitor-facing form.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterviewShareSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/voices":{"get":{"description":"Returns the voice catalog an interview can be given. Filter by ISO 639-1 language code; voices flagged for all languages are always included. No authentication required.","operationId":"VoicesController_list","summary":"List the available voices","tags":["Voices"],"parameters":[{"name":"language","required":false,"in":"query","schema":{"description":"ISO 639-1 code to filter voices by. Voices flagged as \"all\" are always included.","example":"en","type":"string","minLength":2,"maxLength":8},"description":"ISO 639-1 code to filter voices by. Voices flagged as \"all\" are always included."}],"responses":{"200":{"description":"List of voices matching the requested language filter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceListSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[]}},"/v1/voices/{id}/test-audio-url":{"get":{"description":"Returns a URL to a short sample of the voice, to preview it before picking one. No authentication required.","operationId":"VoicesController_getTestAudioUrl","summary":"Get a sample recording of a voice","tags":["Voices"],"parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Voice UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"description":"Voice UUID"}],"responses":{"200":{"description":"Short-lived presigned URL for the voice preview audio. Generated on first request if missing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceTestAudioUrlSchema"}}},"headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}}},"400":{"description":"The request body, a path parameter or the query string failed validation.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"The API key is missing or invalid.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The API key is valid but the resource belongs to another organization.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource does not exist.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The rate limit was exceeded. Wait for `Retry-After` seconds before retrying.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Unexpected server error.","headers":{"RateLimit-Policy":{"description":"Quota and window, in the IETF RateLimit structured-field format (e.g. `300;w=60`).","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed in the current window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"RFC 9745. Present once this version is deprecated, as an HTTP date, giving when it became so.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present alongside `Deprecation`, as an HTTP date, giving when this version stops answering.","schema":{"type":"string"}},"Link":{"description":"Carries `rel=\"deprecation\"` pointing at the migration notes, and `rel=\"service-desc\"` pointing at this specification.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[]}}},"components":{"schemas":{"VoiceTestAudioUrlSchema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresAt":{"type":"string"},"mimeType":{"type":"string"}},"required":["url","expiresAt","mimeType"],"additionalProperties":false,"title":"VoiceTestAudioUrlSchema","description":"Short-lived presigned URL for the voice preview audio. Generated on first request if missing."},"VoiceListSchema":{"type":"array","items":{"$ref":"#/components/schemas/VoiceSchema"},"title":"VoiceListSchema","description":"List of voices matching the requested language filter."},"VoiceSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"language":{"type":"string"},"gender":{"type":"string","enum":["M","F"]},"provider":{"type":"string","enum":["gradium","elevenlabs"]}},"required":["id","name","language","gender","provider"],"additionalProperties":false,"title":"VoiceSchema","description":"A voice available for interview narration. Provider-specific identifiers are not exposed publicly."},"InterviewShareSchema":{"type":"object","properties":{"interviewId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"url":{"type":"string","format":"uri"},"enabled":{"type":"boolean"},"askName":{"$ref":"#/components/schemas/FieldRequirement"},"askEmail":{"$ref":"#/components/schemas/FieldRequirement"},"maxInterviews":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"maxPerIpPerDay":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"opensAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"closesAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"dedupeByContact":{"type":"boolean"},"accessCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"allowedEmailDomains":{"type":"array","items":{"type":"string"}},"interviewsStartedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["interviewId","slug","url","enabled","askName","askEmail","maxInterviews","maxPerIpPerDay","opensAt","closesAt","dedupeByContact","accessCode","allowedEmailDomains","interviewsStartedCount","createdAt","updatedAt"],"additionalProperties":false,"title":"InterviewShareSchema","description":"Configuration of an interview's public share surface (the reusable link). url is the full public URL the host shares. interviewsStartedCount is how many invitations this surface has minted so far (used against maxInterviews). accessCode and allowedEmailDomains are returned to the host so they can review them; they gate the visitor-facing form."},"FieldRequirement":{"type":"string","enum":["off","optional","required"],"title":"FieldRequirement","description":"Per-field policy of the public share form: off (not asked), optional (asked, may be blank), required (asked, must be filled)."},"InterviewMessageAudioUrlSchema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresAt":{"type":"string"},"mimeType":{"type":"string"}},"required":["url","expiresAt","mimeType"],"additionalProperties":false,"title":"InterviewMessageAudioUrlSchema","description":"Short-lived presigned URL for the audio attached to an interview message."},"InterviewLogListSchema":{"type":"array","items":{"$ref":"#/components/schemas/InterviewLogSchema"},"title":"InterviewLogListSchema","description":"Chronological history of events on an interview, most recent first."},"InterviewLogSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string","enum":["email_sent","started","completed","auto_completed","resume_reminder_sent","invitation_reminder_sent","cancelled","reactivated","archived","restored"],"title":"InterviewLogType","description":"Type of an interview log event. archived/restored are interview-level transitions (no invitationId); the others are invitation-scoped. auto_completed is logged when the stale sweep finalizes an abandoned interview after 3h of inactivity; resume_reminder_sent when an invitee who started but did not finish is reminded to resume; invitation_reminder_sent when an invitee who never started is reminded to take their interview."},"target":{"anyOf":[{"type":"string"},{"type":"null"}]},"invitationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string"}},"required":["id","type","target","invitationId","createdAt"],"additionalProperties":false,"title":"InterviewLogSchema","description":"Schema for a single interview log entry. target is the email for send events, null for status transitions. invitationId points to the specific invitation that the event concerns; null for legacy rows that predate the invitation split."},"InterviewInvitationSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"interviewId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"status":{"$ref":"#/components/schemas/InterviewInvitationStatus"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"summary":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"autoCompletedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedByLimit":{"type":"boolean"},"lastEmailSentAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/InterviewMessageSchema"}}},"required":["id","interviewId","slug","status","name","email","summary","archivedAt","autoCompletedAt","completedByLimit","lastEmailSentAt","createdAt","updatedAt"],"additionalProperties":false,"title":"InterviewInvitationSchema","description":"Full interview invitation payload including transcript messages. summary and per-message sentiments are populated asynchronously once the invitation reaches the completed state. autoCompletedAt is set when the interview was finalized automatically after 3h of inactivity (rather than ended by the invitee), meaning the transcript may be incomplete. completedByLimit is true when the interview was finalized because a per-invitation limit (max responses or max minutes) was reached. lastEmailSentAt is the moment the last invitation/resume email was sent to the invitee (null when never emailed). Any completed invitation can be reopened via the reactivate endpoint: it moves to the reopened status so the invitee can resume from their link, and can then be marked completed again via the complete endpoint."},"InterviewMessageSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string","enum":["user","assistant","system"]},"content":{"type":"string"},"audioAssetId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"audioDurationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"audioPeaks":{"anyOf":[{"type":"string"},{"type":"null"}]},"sentiment":{"anyOf":[{"type":"string","enum":["positive","neutral","negative"],"title":"MessageSentiment","description":"Sentiment classification for a single user message. Only set on user-role messages once insights generation has run."},{"type":"null"}]},"createdAt":{"type":"string"}},"required":["id","role","content","audioAssetId","audioDurationMs","audioPeaks","sentiment","createdAt"],"additionalProperties":false,"title":"InterviewMessageSchema","description":"Schema for an interview message. audioAssetId is null when no audio was recorded for that message (legacy messages, deleted audio, etc.). audioPeaks is a base64-encoded uint8 waveform summary of the attached audio (128 amplitude bins, 0-255), null when no audio is attached or when peaks have not been computed yet for a legacy asset. sentiment is populated only on user-role messages once async insights generation has completed."},"InterviewInvitationStatus":{"type":"string","enum":["ready","in_progress","completed","cancelled","reopened"],"title":"InterviewInvitationStatus","description":"Lifecycle state of an invitation (the unit that gets sent and produces a transcript). `reopened` is a completed invitation the host reopened so the invitee can resume it from their link; it is not auto-finalized or reminded by the background sweeps and can be marked completed manually."},"InterviewInvitationListSchema":{"type":"array","items":{"$ref":"#/components/schemas/InterviewInvitationSchema"},"title":"InterviewInvitationListSchema","description":"List of interview invitations belonging to an interview."},"RestoreInterviewResponse":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false,"title":"RestoreInterviewResponse","description":"Response for restoring an archived interview"},"ArchiveInterviewResponse":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false,"title":"ArchiveInterviewResponse","description":"Response for archiving an interview"},"InterviewSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"prompt":{"type":"string"},"intro":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstMessage":{"anyOf":[{"type":"string"},{"type":"null"}]},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]},"voiceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maxMinutes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"maxResponses":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"disableOrgSystemPrompt":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"archivedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"invitationsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"invitationsByStatus":{"$ref":"#/components/schemas/InterviewStatusCounts"},"invitationsArchivedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"invitations":{"type":"array","items":{"$ref":"#/components/schemas/InterviewInvitationSummarySchema"}}},"required":["id","title","prompt","intro","firstMessage","locale","voiceId","maxMinutes","maxResponses","disableOrgSystemPrompt","createdAt","updatedAt","archivedAt","invitationsCount","invitationsByStatus","invitationsArchivedCount","invitations"],"additionalProperties":false,"title":"InterviewSchema","description":"Schema for an interview definition. invitations is the list of recipients this interview has been (or will be) sent to (archived excluded; deactivated/cancelled still listed). invitationsCount is the number of live invitations (archived and deactivated excluded): 1 means single mode, more than 1 means bulk."},"InterviewInvitationSummarySchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"status":{"type":"string","enum":["ready","in_progress","completed","cancelled","reopened"],"title":"InterviewInvitationStatus","description":"Lifecycle state of an invitation (the unit that gets sent and produces a transcript). `reopened` is a completed invitation the host reopened so the invitee can resume it from their link; it is not auto-finalized or reminded by the background sweeps and can be marked completed manually."},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"archivedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"hasMessages":{"type":"boolean"},"summaryAvailable":{"type":"boolean"}},"required":["id","slug","status","name","email","archivedAt","createdAt","updatedAt","hasMessages","summaryAvailable"],"additionalProperties":false,"title":"InterviewInvitationSummarySchema","description":"Lightweight invitation row used in lists. summaryAvailable is true once async insights have produced a summary for this invitation. hasMessages is true as soon as the invitation has at least one transcript message persisted."},"InterviewStatusCounts":{"type":"object","properties":{"ready":{"type":"integer","minimum":0,"maximum":9007199254740991},"in_progress":{"type":"integer","minimum":0,"maximum":9007199254740991},"completed":{"type":"integer","minimum":0,"maximum":9007199254740991},"cancelled":{"type":"integer","minimum":0,"maximum":9007199254740991},"reopened":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["ready","in_progress","completed","cancelled","reopened"],"additionalProperties":false,"title":"InterviewStatusCounts","description":"Number of invitations in each status for a given interview, archived invitations excluded."},"InterviewListSchema":{"type":"array","items":{"$ref":"#/components/schemas/InterviewSchema"},"title":"InterviewListSchema","description":"Schema for a list of interviews"},"CreatedInterviewsResponse":{"type":"array","items":{"$ref":"#/components/schemas/CreatedInterviewSchema"},"title":"CreatedInterviewsResponse","description":"Response for interview creation"},"CreatedInterviewSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"invitationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"slug":{"type":"string"},"status":{"type":"string","enum":["ready","in_progress","completed","cancelled","reopened"],"title":"InterviewInvitationStatus","description":"Lifecycle state of an invitation (the unit that gets sent and produces a transcript). `reopened` is a completed invitation the host reopened so the invitee can resume it from their link; it is not auto-finalized or reminded by the background sweeps and can be marked completed manually."}},"required":["id","invitationId","slug","status"],"additionalProperties":false,"title":"CreatedInterviewSchema","description":"Schema for a newly created interview, including the slug of its initial invitation."},"ApiError":{"type":"object","title":"ApiError","description":"Error body returned by the API for a rejected request.","required":["statusCode","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code.","example":404},"error":{"type":"string","description":"Short machine-readable label for the status.","example":"Not Found"},"message":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Human-readable explanation of what went wrong.","example":"Interview not found"}}},"ValidationError":{"type":"object","title":"ValidationError","description":"Error body returned when the request body, a parameter or a query string fails validation.","required":["statusCode","errors"],"properties":{"statusCode":{"type":"integer","enum":[400],"example":400},"timestamp":{"type":"string","format":"date-time"},"path":{"type":"string","description":"Path of the rejected request.","example":"/v1/interviews"},"errors":{"type":"array","description":"One entry per rejected value.","items":{"type":"object","required":["message"],"properties":{"path":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"description":"Location of the value inside the payload."},"code":{"type":"string","description":"Validation rule that rejected the value.","example":"too_small"},"message":{"type":"string","example":"Too small: expected string to have >=10 characters"}}}}}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Organization API key. Create one in Settings → API."}}},"security":[{"bearerAuth":[]}]}