API reference
API: Lists
| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /v1/lists | Saved lists (static membership or dynamic filters) | records:read |
| POST | /v1/lists | Create a list. Dynamic lists re-evaluate their filter every time they're read. | records:write |
| GET | /v1/lists/:id | Get one list with its member count | records:read |
| PATCH | /v1/lists/:id | Rename, change the filter, archive or restore a list | records:write |
| POST | /v1/lists/:id/members | Add or remove records on a static list (a record can be on many lists) | records:write |
| GET | /v1/lists/:id/records | Records on a list (dynamic lists evaluate their filter now) | records:read |
| GET | /v1/lists/schema | JSON Schemas for list create and update bodies (including the dynamic filter grammar) | records:read |
Examples
GET /v1/lists
Saved lists (static membership or dynamic filters)
curl -s "https://api.closefinch.com/v1/lists" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/lists`, {
method: "GET",
headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();POST /v1/lists
Create a list. Dynamic lists re-evaluate their filter every time they're read.
curl -s -X POST "https://api.closefinch.com/v1/lists" \
-H "Authorization: Bearer $RA_API_KEY" \
-H "content-type: application/json" \
-d '{}'const res = await fetch(`https://api.closefinch.com/v1/lists`, {
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/lists/$ID
Get one list with its member count
curl -s "https://api.closefinch.com/v1/lists/$ID" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/lists/${id}`, {
method: "GET",
headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();PATCH /v1/lists/$ID
Rename, change the filter, archive or restore a list
curl -s -X PATCH "https://api.closefinch.com/v1/lists/$ID" \
-H "Authorization: Bearer $RA_API_KEY" \
-H "content-type: application/json" \
-d '{}'const res = await fetch(`https://api.closefinch.com/v1/lists/${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/lists/$ID/members
Add or remove records on a static list (a record can be on many lists)
curl -s -X POST "https://api.closefinch.com/v1/lists/$ID/members" \
-H "Authorization: Bearer $RA_API_KEY" \
-H "content-type: application/json" \
-d '{}'const res = await fetch(`https://api.closefinch.com/v1/lists/${id}/members`, {
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/lists/$ID/records
Records on a list (dynamic lists evaluate their filter now)
curl -s "https://api.closefinch.com/v1/lists/$ID/records" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/lists/${id}/records`, {
method: "GET",
headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();GET /v1/lists/schema
JSON Schemas for list create and update bodies (including the dynamic filter grammar)
curl -s "https://api.closefinch.com/v1/lists/schema" \
-H "Authorization: Bearer $RA_API_KEY"const res = await fetch(`https://api.closefinch.com/v1/lists/schema`, {
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.