Skip to main content
GET
/
api
/
public
/
v1
/
proposals
/
{proposalId}
/
interview
curl -sS https://app.opentrain.ai/api/public/v1/proposals/<PROPOSAL_ID>/interview \
  -H "Authorization: Bearer $OT_API_TOKEN"
{
  "interview": {
    "proposalId": "<PROPOSAL_ID>",
    "interviewId": "<INTERVIEW_ID>",
    "score": 86,
    "summary": "Strong grasp of sentiment-labeling edge cases; clear communication; native Spanish speaker with prior social-media annotation experience.",
    "messages": [
      {
        "id": "<MESSAGE_ID_1>",
        "role": "interviewer",
        "content": "Tell me about your experience labeling sentiment in social media posts.",
        "sentAt": "2026-06-11T15:20:00.000Z"
      },
      {
        "id": "<MESSAGE_ID_2>",
        "role": "candidate",
        "content": "I spent two years annotating Spanish-language tweets for a sentiment model, including sarcasm and mixed-sentiment cases.",
        "sentAt": "2026-06-11T15:21:00.000Z"
      }
    ]
  }
}
Returns the complete AI-interview transcript for a proposal — every exchange between the AI interviewer and the candidate, oldest first — plus the score and summary. Check aiInterview.transcriptAvailable on GET /proposals/{proposalId} first; this endpoint returns 404 when no interview is recorded. Transcripts are sanitized before they leave the platform: contact details and other personal identifiers are scrubbed — see privacy. Requirements: proposals:read scope. The proposal must be on a job you own (403 otherwise). Works pre-claim.

Request

proposalId
string
required
The proposal ID.

Response

interview
object

Errors

StatuscodeMeaning
400BAD_REQUESTMissing proposalId
401UNAUTHORIZEDMissing or invalid token
403FORBIDDENMissing proposals:read scope, or the proposal is on another account’s job
404NOT_FOUNDNo such proposal, or no AI interview is recorded for this proposal (details.proposalId)
curl -sS https://app.opentrain.ai/api/public/v1/proposals/<PROPOSAL_ID>/interview \
  -H "Authorization: Bearer $OT_API_TOKEN"
{
  "interview": {
    "proposalId": "<PROPOSAL_ID>",
    "interviewId": "<INTERVIEW_ID>",
    "score": 86,
    "summary": "Strong grasp of sentiment-labeling edge cases; clear communication; native Spanish speaker with prior social-media annotation experience.",
    "messages": [
      {
        "id": "<MESSAGE_ID_1>",
        "role": "interviewer",
        "content": "Tell me about your experience labeling sentiment in social media posts.",
        "sentAt": "2026-06-11T15:20:00.000Z"
      },
      {
        "id": "<MESSAGE_ID_2>",
        "role": "candidate",
        "content": "I spent two years annotating Spanish-language tweets for a sentiment model, including sarcasm and mixed-sentiment cases.",
        "sentAt": "2026-06-11T15:21:00.000Z"
      }
    ]
  }
}