Skip to content

API reference

API: Interview synthesis

Markdown version

MethodPathWhat it doesScope
GET/v1/interview-synthesesDiscovery-interview synthesesknowledge:read
POST/v1/interview-synthesesSynthesize discovery interviews (activity ids, or a tag, date range and accounts) in the background, up to 20 interviews a run; poll it until doneknowledge:write
GET/v1/interview-syntheses/:idA synthesis: themes by kind ranked by interviews (n of N), single mentions flagged, quotes with speaker, interview and timeknowledge:read
POST/v1/interview-syntheses/:id/kb-proposalOffer the synthesis to the knowledge base's icp or positioning section (a person accepts it)knowledge:write
POST/v1/interview-syntheses/:id/runRe-run in the background: add interviews the filter now picks (and any ids given) and rebuild the themes (refused while a run is queued or running)knowledge:write

Examples

GET /v1/interview-syntheses

Discovery-interview syntheses

curl -s "https://api.closefinch.com/v1/interview-syntheses" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/interview-syntheses`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

POST /v1/interview-syntheses

Synthesize discovery interviews (activity ids, or a tag, date range and accounts) in the background, up to 20 interviews a run; poll it until done

curl -s -X POST "https://api.closefinch.com/v1/interview-syntheses" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/interview-syntheses`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/interview-syntheses/$ID

A synthesis: themes by kind ranked by interviews (n of N), single mentions flagged, quotes with speaker, interview and time

curl -s "https://api.closefinch.com/v1/interview-syntheses/$ID" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/interview-syntheses/${id}`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

POST /v1/interview-syntheses/$ID/kb-proposal

Offer the synthesis to the knowledge base's icp or positioning section (a person accepts it)

curl -s -X POST "https://api.closefinch.com/v1/interview-syntheses/$ID/kb-proposal" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/interview-syntheses/${id}/kb-proposal`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

POST /v1/interview-syntheses/$ID/run

Re-run in the background: add interviews the filter now picks (and any ids given) and rebuild the themes (refused while a run is queued or running)

curl -s -X POST "https://api.closefinch.com/v1/interview-syntheses/$ID/run" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/interview-syntheses/${id}/run`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

Request and response schemas: https://www.closefinch.com/openapi.json. All resources: API reference.

Send feedback

Tell us what's broken, confusing or missing on this page, or an idea. It goes to the team that builds the product.

Please don't include passwords or card numbers.
Only to reply about this. Never added to any mailing list.