Skip to content

API reference

API: Voice

Markdown version

MethodPathWhat it doesScope
GET/v1/voice/brandYour company's voice (accepted and newly built), example snippets with their sources, and its knowledge-base proposalknowledge:read
PUT/v1/voice/brandEdit the company's voice (owners, from the app): saved to the KB voice section as a new version (web app only)settings:write
POST/v1/voice/brand/rebuildLearn the company's voice from your site, the team's org-visible emails and calls, and playbooks (owner): a proposal for the KB voice sectionsettings:write
GET/v1/voice/meYour own voice, learned only from your own sent emails (only you can see it)knowledge:read
PUT/v1/voice/meEdit your own voiceknowledge:read
POST/v1/voice/me/rebuildLearn your own voice again from your sent emails and your ratingsknowledge:read
GET/v1/voice/ratingsYour ratings of drafts and edits, and the company-voice ratings everyone sharesknowledge:read
POST/v1/voice/ratingsRate a draft or your edit of it (thumbs up or down, with a note): the next rebuild of that voice uses itknowledge:read
POST/v1/voice/scoreScore a draft 0–100 against the company's voice and your own, with specific issuesknowledge:read

Examples

GET /v1/voice/brand

Your company's voice (accepted and newly built), example snippets with their sources, and its knowledge-base proposal

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

POST /v1/voice/brand/rebuild

Learn the company's voice from your site, the team's org-visible emails and calls, and playbooks (owner): a proposal for the KB voice section

curl -s -X POST "https://api.closefinch.com/v1/voice/brand/rebuild" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/voice/brand/rebuild`, {
  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/voice/me

Your own voice, learned only from your own sent emails (only you can see it)

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

PUT /v1/voice/me

Edit your own voice

curl -s -X PUT "https://api.closefinch.com/v1/voice/me" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/voice/me`, {
  method: "PUT",
  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/voice/me/rebuild

Learn your own voice again from your sent emails and your ratings

curl -s -X POST "https://api.closefinch.com/v1/voice/me/rebuild" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/voice/me/rebuild`, {
  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/voice/ratings

Your ratings of drafts and edits, and the company-voice ratings everyone shares

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

POST /v1/voice/ratings

Rate a draft or your edit of it (thumbs up or down, with a note): the next rebuild of that voice uses it

curl -s -X POST "https://api.closefinch.com/v1/voice/ratings" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/voice/ratings`, {
  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/voice/score

Score a draft 0–100 against the company's voice and your own, with specific issues

curl -s -X POST "https://api.closefinch.com/v1/voice/score" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/voice/score`, {
  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.