API reference
API: Business profile
| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /v1/business-profile | Your own site, the latest crawl (claims with sources, what changed) and the proposals for the knowledge base | knowledge:read |
| POST | /v1/business-profile/apply-icp | Apply the profile's ICP rules to an ICP (merged; its exclusions kept) or to a new one (owner): this is how the profile feeds scoring | settings:write |
| GET | /v1/business-profile/crawls/:id | One crawl: pages read, claims with their quotes, what changed, the trace | knowledge:read |
| GET | /v1/business-profile/icp-draft | The ICP rules your accepted profile proposes (roles, industries, sizes) and what applying them to an ICP would change | knowledge:read |
| GET | /v1/business-profile/proposals | Proposals for knowledge-base sections, pending first, each with its sources and a diff against the section as it is now | knowledge:read |
| POST | /v1/business-profile/proposals/:id/accept | Accept a proposal, as is or edited: the section is saved in the knowledge base as a new version (owners, from the app) (web app only) | settings:write |
| POST | /v1/business-profile/proposals/:id/reject | Reject a proposal (the section stays as it is) | settings:write |
| POST | /v1/business-profile/rebuild | Read your site again and propose changes (owner; runs in the background; nothing reaches the knowledge base until a person accepts it) | settings:write |
| PUT | /v1/business-profile/site | Set your organization's own website (owner) | settings:write |
| GET | /v1/knowledge-proposals | Every proposal for the knowledge base in one queue (your site, brand voice, proof points, interview syntheses), each with its sources and the route that decides it | knowledge:read |
Examples
GET /v1/business-profile
Your own site, the latest crawl (claims with sources, what changed) and the proposals for the knowledge base
curl -s "https://api.closefinch.com/v1/business-profile" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/business-profile`, {
method: "GET",
headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();POST /v1/business-profile/apply-icp
Apply the profile's ICP rules to an ICP (merged; its exclusions kept) or to a new one (owner): this is how the profile feeds scoring
curl -s -X POST "https://api.closefinch.com/v1/business-profile/apply-icp" \
-H "Authorization: Bearer $RA_API_KEY" \
-H "content-type: application/json" \
-d '{}'const res = await fetch(`https://api.closefinch.com/v1/business-profile/apply-icp`, {
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/business-profile/crawls/$ID
One crawl: pages read, claims with their quotes, what changed, the trace
curl -s "https://api.closefinch.com/v1/business-profile/crawls/$ID" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/business-profile/crawls/${id}`, {
method: "GET",
headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();GET /v1/business-profile/icp-draft
The ICP rules your accepted profile proposes (roles, industries, sizes) and what applying them to an ICP would change
curl -s "https://api.closefinch.com/v1/business-profile/icp-draft" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/business-profile/icp-draft`, {
method: "GET",
headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();GET /v1/business-profile/proposals
Proposals for knowledge-base sections, pending first, each with its sources and a diff against the section as it is now
curl -s "https://api.closefinch.com/v1/business-profile/proposals" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/business-profile/proposals`, {
method: "GET",
headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();POST /v1/business-profile/proposals/$ID/reject
Reject a proposal (the section stays as it is)
curl -s -X POST "https://api.closefinch.com/v1/business-profile/proposals/$ID/reject" \
-H "Authorization: Bearer $RA_API_KEY" \
-H "content-type: application/json" \
-d '{}'const res = await fetch(`https://api.closefinch.com/v1/business-profile/proposals/${id}/reject`, {
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/business-profile/rebuild
Read your site again and propose changes (owner; runs in the background; nothing reaches the knowledge base until a person accepts it)
curl -s -X POST "https://api.closefinch.com/v1/business-profile/rebuild" \
-H "Authorization: Bearer $RA_API_KEY" \
-H "content-type: application/json" \
-d '{}'const res = await fetch(`https://api.closefinch.com/v1/business-profile/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();PUT /v1/business-profile/site
Set your organization's own website (owner)
curl -s -X PUT "https://api.closefinch.com/v1/business-profile/site" \
-H "Authorization: Bearer $RA_API_KEY" \
-H "content-type: application/json" \
-d '{}'const res = await fetch(`https://api.closefinch.com/v1/business-profile/site`, {
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();GET /v1/knowledge-proposals
Every proposal for the knowledge base in one queue (your site, brand voice, proof points, interview syntheses), each with its sources and the route that decides it
curl -s "https://api.closefinch.com/v1/knowledge-proposals" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/knowledge-proposals`, {
method: "GET",
headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();Request and response schemas: https://www.closefinch.com/openapi.json. All resources: API reference.