Skip to content

API reference

API: Schema

Markdown version

MethodPathWhat it doesScope
GET/v1/backfills/:idOne backfill run: progress, changes, errors with sample recordsrecords:read
POST/v1/backfills/:id/cancelStop a queued or running backfill (records already done keep their values)settings:write
DELETE/v1/fields/:idArchive a custom field (owner). Existing values are kept but not returned until it's restored.settings:write
PATCH/v1/fields/:idRename a custom field or change its options (owner). The type can't change. Send an option's id to change its value: records holding the old value are updated.settings:write
POST/v1/fields/:id/backfillRecompute a computed field across existing records in the background: all, only empty ones, or those matching a filter. test_record_ids runs on those records only first.settings:write
GET/v1/fields/:id/backfillsBackfill runs of a field, newest firstrecords:read
POST/v1/fields/:id/restoreRestore an archived custom field (owner). Its kept values come back.settings:write
GET/v1/objectsEvery object type (built-in and custom) with its fields; include_archived=true adds archived custom objects and archived fields (to restore)records:read
POST/v1/objectsCreate a custom object (owner)settings:write
DELETE/v1/objects/:keyArchive a custom object (owner). Its records are kept; restore with POST /v1/objects/{key}/restore.settings:write
PATCH/v1/objects/:keyRename a custom object (owner). The key stays the same.settings:write
POST/v1/objects/:key/restoreRestore an archived custom object (owner)settings:write
POST/v1/objects/:object/fieldsAdd a typed custom field to an object (owners; members too when Settings → CRM allows it). Required fields apply to records created afterwards.records:write
POST/v1/objects/:object/formula-previewCheck a formula and evaluate it on sample records (the 5 most recently changed, or up to 10 given) without saving anythingrecords:read

Examples

GET /v1/backfills/$ID

One backfill run: progress, changes, errors with sample records

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

POST /v1/backfills/$ID/cancel

Stop a queued or running backfill (records already done keep their values)

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

DELETE /v1/fields/$ID

Archive a custom field (owner). Existing values are kept but not returned until it's restored.

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

PATCH /v1/fields/$ID

Rename a custom field or change its options (owner). The type can't change. Send an option's id to change its value: records holding the old value are updated.

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

Recompute a computed field across existing records in the background: all, only empty ones, or those matching a filter. test_record_ids runs on those records only first.

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

Backfill runs of a field, newest first

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

POST /v1/fields/$ID/restore

Restore an archived custom field (owner). Its kept values come back.

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

Every object type (built-in and custom) with its fields; include_archived=true adds archived custom objects and archived fields (to restore)

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

POST /v1/objects

Create a custom object (owner)

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

DELETE /v1/objects/$KEY

Archive a custom object (owner). Its records are kept; restore with POST /v1/objects/{key}/restore.

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

PATCH /v1/objects/$KEY

Rename a custom object (owner). The key stays the same.

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

Restore an archived custom object (owner)

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

Add a typed custom field to an object (owners; members too when Settings → CRM allows it). Required fields apply to records created afterwards.

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

Check a formula and evaluate it on sample records (the 5 most recently changed, or up to 10 given) without saving anything

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