Skip to content

API reference

API: AI fields

Markdown version

MethodPathWhat it doesScope
POST/v1/ai/fillFill one AI field of one record now. The value applies with its source and reason when the model is confident enough and no person set the field; otherwise it's a suggestion.records:write
GET/v1/capture-batchesCapture batches, newest firstrecords:read
POST/v1/capture-batchesFill captured fields over existing records from their conversation history (owner; budget-checked; a report per record)settings:write
GET/v1/capture-batches/:idOne capture batch: progress, cost, and the report (record, field, outcome)records:read
POST/v1/capture-batches/:id/cancelStop a capture batch (records done keep their values)settings:write
POST/v1/capture-batches/estimatePreview a capture batch: records in scope (the first ten), fields, model and estimated costrecords:read
GET/v1/field-suggestionsValues the AI proposed but didn't apply (low confidence, or a person set the field), for a recordrecords:read
POST/v1/field-suggestions/:id/acceptApply a suggested value as your own change (its source and reason stay with it)records:write
POST/v1/field-suggestions/:id/dismissDismiss a suggested valuerecords:write
GET/v1/fields/:id/backfill-estimateBefore filling an AI field across existing records: how many records and the estimated model costrecords:read
POST/v1/objects/:object/fields/generateDescribe a field in words; the model proposes its name, type, options and fill instructions. Nothing is created: review it, then POST …/fields with ai.records:write
GET/v1/settings/captureBuilt-in fields filled from emails, meetings and calls as they land (AI fields have their own setting)records:read
PUT/v1/settings/captureChoose which built-in fields fill from conversations (owner). Empty instructions use the default.settings:write
GET/v1/settings/capture-retroRetro capture rules: re-run capture over a record's conversation history when it's created or changesrecords:read
PUT/v1/settings/capture-retroSet the retro capture rules (owner)settings:write

Examples

POST /v1/ai/fill

Fill one AI field of one record now. The value applies with its source and reason when the model is confident enough and no person set the field; otherwise it's a suggestion.

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

Capture batches, newest first

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

POST /v1/capture-batches

Fill captured fields over existing records from their conversation history (owner; budget-checked; a report per record)

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

One capture batch: progress, cost, and the report (record, field, outcome)

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

POST /v1/capture-batches/$ID/cancel

Stop a capture batch (records done keep their values)

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

Preview a capture batch: records in scope (the first ten), fields, model and estimated cost

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

Values the AI proposed but didn't apply (low confidence, or a person set the field), for a record

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

POST /v1/field-suggestions/$ID/accept

Apply a suggested value as your own change (its source and reason stay with it)

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

Dismiss a suggested value

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

Before filling an AI field across existing records: how many records and the estimated model cost

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

POST /v1/objects/$OBJECT/fields/generate

Describe a field in words; the model proposes its name, type, options and fill instructions. Nothing is created: review it, then POST …/fields with ai.

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

Built-in fields filled from emails, meetings and calls as they land (AI fields have their own setting)

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

PUT /v1/settings/capture

Choose which built-in fields fill from conversations (owner). Empty instructions use the default.

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

Retro capture rules: re-run capture over a record's conversation history when it's created or changes

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

PUT /v1/settings/capture-retro

Set the retro capture rules (owner)

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

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.