Skip to main content
GET
/
interviews
/
{id}
curl "https://app.usehindsight.com/api/v1/interviews/4821" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "interview_request_id": 4821,
  "contact_id": "contact_abc123",
  "deal_id": "deal_xyz789",
  "survey_url": "https://app.usehindsight.com/survey?token=tok_xyz",
  "status": "sent",
  "objective": "Understand why we lost to Competitor X",
  "email_sent_at": "2026-05-15T10:00:00Z",
  "created_at": "2026-05-15T09:00:00Z",
  "transcript": null
}

Documentation Index

Fetch the complete documentation index at: https://docs.usehindsight.com/llms.txt

Use this file to discover all available pages before exploring further.

GET https://app.usehindsight.com/api/v1/interviews/{id}
Authorization: Bearer YOUR_API_KEY

Path parameter:
  id: integer  — the interview_request_id returned from POST /interviews

200 Response:
{
  "interview_request_id": 4821,
  "contact_id": "contact_abc123",
  "deal_id": "deal_xyz789",
  "survey_url": "https://app.usehindsight.com/survey?token=tok_xyz",
  "status": "created" | "sent" | "completed",
  "objective": "string | null",
  "email_sent_at": "2026-05-15T10:00:00Z | null",
  "created_at": "2026-05-15T09:00:00Z",
  "transcript": {               // null unless status = "completed"
    "document_id": "doc_abc123",
    "content": "**Paige:** ...\n\n**Jane:** ...",
    "created_at": "2026-05-16T14:30:00Z"
  } | null
}

Rate limits: 60 req/min (Essentials), 300 req/min (Growth), 1,000 req/min (Enterprise)

Overview

Returns the current status of an interview request and, once completed, its full transcript. Poll this endpoint to check whether a contact has responded. When status is "completed", the transcript.content field contains the full conversation in markdown.

Status Values

StatusMeaning
createdRequest exists but no outreach email has been sent yet.
sentEmail sent; waiting for the contact to complete the interview.
completedInterview finished. transcript is populated.

Path Parameter

ParameterTypeDescription
idintegerThe interview_request_id returned when the interview was created via POST /interviews.

Response

FieldTypeDescription
interview_request_idintegerID of the interview request.
contact_idstring | nullID of the contact being interviewed.
deal_idstring | nullAssociated deal ID, or null.
survey_urlstring | nullDirect link to the survey for this contact.
statusstringcreated, sent, or completed.
objectivestring | nullInterview-specific goal, if set.
email_sent_atstring | nullISO timestamp when the outreach email was sent.
created_atstringISO timestamp when the request was created.
transcriptobject | nullPopulated when status is "completed". See below.

Transcript object

FieldTypeDescription
document_idstringID of the document storing the transcript.
contentstringFull interview conversation in markdown. Speaker turns are formatted as **Name:** message.
created_atstringISO timestamp when the transcript was saved.

Polling

There is no webhook support yet — poll this endpoint to detect completion. A reasonable cadence for most use cases is every 5–15 minutes after sending.
POST /interviews         → store interview_request_id
GET  /interviews/{id}   → poll until status = "completed"
                        → read transcript.content
Avoid polling faster than once per minute — completions typically happen hours after the email is sent.

Rate Limits

PlanRequests per Minute
Essentials60
Growth300
Enterprise1,000

Examples

curl "https://app.usehindsight.com/api/v1/interviews/4821" \
  -H "Authorization: Bearer YOUR_API_KEY"

Error Responses

CodeDescription
unauthorizedInvalid or missing API key.
not_foundInterview request not found, or it belongs to a different org.
rate_limit_exceededToo many requests. Check X-RateLimit-Reset and retry after.
{
  "error": {
    "code": "not_found",
    "message": "Interview request not found"
  }
}

Authorizations

Authorization
string
header
required

API key from Hindsight dashboard

Path Parameters

id
integer
required

The interview_request_id returned when the interview was created.

Response

Interview request found

interview_request_id
integer

ID of the interview request.

Example:

4821

contact_id
string | null

ID of the contact being interviewed.

Example:

"contact_abc123"

deal_id
string | null

Associated deal ID, or null.

Example:

"deal_xyz789"

survey_url
string | null

Direct link to the survey for this contact.

Example:

"https://app.usehindsight.com/survey?token=tok_xyz"

status
enum<string>

created — request exists, no email sent yet. sent — email sent, awaiting the contact's response. completed — interview finished; transcript is populated.

Available options:
created,
sent,
completed
Example:

"sent"

objective
string | null

The interview-specific goal, if set.

Example:

"Understand why we lost to Competitor X"

email_sent_at
string<date-time> | null

ISO timestamp when the outreach email was sent, or null.

Example:

"2026-05-15T10:00:00Z"

created_at
string<date-time>

ISO timestamp when the interview request was created.

Example:

"2026-05-15T09:00:00Z"

transcript
object

Present when status is "completed", null otherwise.