Lists the church's published notes. Keys never see drafts, notes in review or retired notes. Because unpublished notes are filtered out after the page is cut, a page can hold fewer items than limit while has_next is still true; keep following next_cursor.
Auth. A church API key. Needs the notes:read scope, or a wildcard that includes it (machine:read, machine:*, * on a partner key). A partner key can call it for a customer church by sending X-Folio-Church.
Limits. Responses carry RateLimit-Limit and RateLimit-Remaining; a 429 carries Retry-After.
Auth
Church API key
Scope
notes:read
Operation id
machineListNotes
Parameters
Parameters
Name
In
Description
limit
query
Items per page. (integer, e.g. 20)
cursor
query
Opaque cursor from meta.next_cursor of the previous page. (string)
X-Folio-Church
header
Partner keys only: run this call as one of your customer churches (its org_ id or slug). The church must be one of yours, the key must be allowed to act for it, and plan checks run against that church. (string, e.g. org_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012)
Responses
Response data fields
Field
Type
Description
approval_kind
string
How it was approved: human when a reviewer read it, automatic when the church's automatic approval did. Null when not approved.
approved_at
string (date-time)
When it was approved.
church
string
The church name.
created_at
string (date-time)
When the first version was written.
id
string
The note id, prefixed note_.
object
enum: note
Always note.
published_at
string (date-time)
When it was published.
sections
object[]
The note body in order. Each section has a heading (h) and a body.
share_path
string
The path of the published share page on the church's public site.
share_slug
string
The slug of the published share page.
speaker
string
Who taught it.
status
string
The note status. Keys only see published notes.
summary
string
A short summary of the teaching.
teaching
object
The teaching the note was written from.
id
string
The id, with a type prefix such as tch_ or note_.
name
string
The name.
object
string
The object type.
updated_at
string (date-time)
When it last changed.
200 Success. List published notes.200 example
{
"status": true,
"message": "notes",
"data": [
{
"id": "note_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
"object": "note",
"teaching": {
"id": "tch_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
"object": "teaching",
"name": "Sunday, 1 November: Nothing can separate us"
},
"status": "published",
"summary": "Nothing in all creation can separate us from the love of God in Christ.",
"sections": [
{
"h": "Who can condemn?",
"body": "Paul answers with Christ's death, resurrection and intercession."
}
],
"approval_kind": "human",
"approved_at": "2026-11-01T12:30:00Z",
"published_at": "2026-11-01T12:31:00Z",
"created_at": "2026-11-01T10:20:00Z",
"updated_at": "2026-11-01T12:31:00Z",
"share_slug": "nothing-can-separate-us",
"share_path": "/grace-chapel/notes/nothing-can-separate-us"
}
],
"meta": {
"request_id": "req_b337770ecebe03b03a88a8998b59263d",
"has_next": false,
"has_prev": false
}
}
400 The request could not be read.400 example
{
"status": false,
"message": "the page cursor is not valid",
"error": {
"code": "invalid_argument",
"status": 400,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
401 The key or session is missing, invalid or expired.401 example
{
"status": false,
"message": "That API key is not valid or has expired.",
"error": {
"code": "unauthenticated",
"status": 401,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
403 The credential lacks the scope, the church is suspended, the feature is not in the plan, or the address is not allowed.403 example
{
"status": false,
"message": "That API key does not have the required scope.",
"error": {
"code": "permission_denied",
"status": 403,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
404 The resource is not in this church.404 example
{
"status": false,
"message": "That item is not in this church.",
"error": {
"code": "not_found",
"status": 404,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
409 Conflict, including a duplicate Idempotency-Key still being processed.409 example
{
"status": false,
"message": "A request with this Idempotency-Key is still running.",
"error": {
"code": "conflict",
"status": 409,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
422 A field failed validation, or an Idempotency-Key was reused with a different body.422 example
{
"status": false,
"message": "A field is not valid.",
"error": {
"code": "validation",
"status": 422,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
429 Rate limited. Wait Retry-After seconds.429 example
Returns one published note. A note that exists but is not published answers 404, the same as an unknown id. Verses quoted in a note are checked against the King James Version before the note can be approved.
Auth. A church API key. Needs the notes:read scope, or a wildcard that includes it (machine:read, machine:*, * on a partner key). A partner key can call it for a customer church by sending X-Folio-Church.
Limits. Responses carry RateLimit-Limit and RateLimit-Remaining; a 429 carries Retry-After.
Auth
Church API key
Scope
notes:read
Operation id
machineGetNote
Parameters
Parameters
Name
In
Description
note required
path
The note id, prefixed note_. (string, e.g. note_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012)
X-Folio-Church
header
Partner keys only: run this call as one of your customer churches (its org_ id or slug). The church must be one of yours, the key must be allowed to act for it, and plan checks run against that church. (string, e.g. org_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012)
Responses
Response data fields
Field
Type
Description
approval_kind
string
How it was approved: human when a reviewer read it, automatic when the church's automatic approval did. Null when not approved.
approved_at
string (date-time)
When it was approved.
church
string
The church name.
created_at
string (date-time)
When the first version was written.
id
string
The note id, prefixed note_.
object
enum: note
Always note.
published_at
string (date-time)
When it was published.
sections
object[]
The note body in order. Each section has a heading (h) and a body.
share_path
string
The path of the published share page on the church's public site.
share_slug
string
The slug of the published share page.
speaker
string
Who taught it.
status
string
The note status. Keys only see published notes.
summary
string
A short summary of the teaching.
teaching
object
The teaching the note was written from.
id
string
The id, with a type prefix such as tch_ or note_.
name
string
The name.
object
string
The object type.
updated_at
string (date-time)
When it last changed.
200 Success. Read a published note.200 example
{
"status": true,
"message": "note",
"data": {
"id": "note_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
"object": "note",
"teaching": {
"id": "tch_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
"object": "teaching",
"name": "Sunday, 1 November: Nothing can separate us"
},
"status": "published",
"summary": "Nothing in all creation can separate us from the love of God in Christ.",
"sections": [
{
"h": "Who can condemn?",
"body": "Paul answers with Christ's death, resurrection and intercession."
}
],
"approval_kind": "automatic",
"approved_at": "2026-11-01T12:30:00Z",
"published_at": "2026-11-01T12:31:00Z",
"created_at": "2026-11-01T10:20:00Z",
"updated_at": "2026-11-01T12:31:00Z",
"share_slug": "nothing-can-separate-us",
"share_path": "/grace-chapel/notes/nothing-can-separate-us"
}
}
400 The request could not be read.400 example
{
"status": false,
"message": "the page cursor is not valid",
"error": {
"code": "invalid_argument",
"status": 400,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
401 The key or session is missing, invalid or expired.401 example
{
"status": false,
"message": "That API key is not valid or has expired.",
"error": {
"code": "unauthenticated",
"status": 401,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
403 The credential lacks the scope, the church is suspended, the feature is not in the plan, or the address is not allowed.403 example
{
"status": false,
"message": "That API key does not have the required scope.",
"error": {
"code": "permission_denied",
"status": 403,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
404 The resource is not in this church.404 example
{
"status": false,
"message": "That item is not in this church.",
"error": {
"code": "not_found",
"status": 404,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
409 Conflict, including a duplicate Idempotency-Key still being processed.409 example
{
"status": false,
"message": "A request with this Idempotency-Key is still running.",
"error": {
"code": "conflict",
"status": 409,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
422 A field failed validation, or an Idempotency-Key was reused with a different body.422 example
{
"status": false,
"message": "A field is not valid.",
"error": {
"code": "validation",
"status": 422,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
429 Rate limited. Wait Retry-After seconds.429 example
Returns the published note written from a teaching. Until a person (or the church's automatic approval) has published the note, this answers 404 "This teaching has no published note yet." That is expected: Folio shows nothing to members, or to your integration, before review.
Subscribe to note.published to know when to call it.
Auth. A church API key. Needs the notes:read scope, or a wildcard that includes it (machine:read, machine:*, * on a partner key). A partner key can call it for a customer church by sending X-Folio-Church.
Limits. Responses carry RateLimit-Limit and RateLimit-Remaining; a 429 carries Retry-After.
Auth
Church API key
Scope
notes:read
Operation id
machineGetTeachingNote
Parameters
Parameters
Name
In
Description
teaching required
path
The teaching id, prefixed tch_. (string, e.g. tch_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012)
X-Folio-Church
header
Partner keys only: run this call as one of your customer churches (its org_ id or slug). The church must be one of yours, the key must be allowed to act for it, and plan checks run against that church. (string, e.g. org_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012)
Responses
Response data fields
Field
Type
Description
approval_kind
string
How it was approved: human when a reviewer read it, automatic when the church's automatic approval did. Null when not approved.
approved_at
string (date-time)
When it was approved.
church
string
The church name.
created_at
string (date-time)
When the first version was written.
id
string
The note id, prefixed note_.
object
enum: note
Always note.
published_at
string (date-time)
When it was published.
sections
object[]
The note body in order. Each section has a heading (h) and a body.
share_path
string
The path of the published share page on the church's public site.
share_slug
string
The slug of the published share page.
speaker
string
Who taught it.
status
string
The note status. Keys only see published notes.
summary
string
A short summary of the teaching.
teaching
object
The teaching the note was written from.
id
string
The id, with a type prefix such as tch_ or note_.
name
string
The name.
object
string
The object type.
updated_at
string (date-time)
When it last changed.
200 Success. Read the note for a teaching.200 example
{
"status": true,
"message": "note",
"data": {
"id": "note_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
"object": "note",
"teaching": {
"id": "tch_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
"object": "teaching",
"name": "Sunday, 1 November: Nothing can separate us"
},
"status": "published",
"summary": "Nothing in all creation can separate us from the love of God in Christ.",
"sections": [
{
"h": "Who can condemn?",
"body": "Paul answers with Christ's death, resurrection and intercession."
},
{
"h": "More than conquerors",
"body": "Hardship does not cancel God's love; it is where that love is proved."
}
],
"approval_kind": "human",
"approved_at": "2026-11-01T12:30:00Z",
"published_at": "2026-11-01T12:31:00Z",
"created_at": "2026-11-01T10:20:00Z",
"updated_at": "2026-11-01T12:31:00Z",
"share_slug": "nothing-can-separate-us",
"share_path": "/grace-chapel/notes/nothing-can-separate-us",
"church": "Grace Chapel",
"speaker": "Pastor Ade"
}
}
400 The request could not be read.400 example
{
"status": false,
"message": "the page cursor is not valid",
"error": {
"code": "invalid_argument",
"status": 400,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
401 The key or session is missing, invalid or expired.401 example
{
"status": false,
"message": "That API key is not valid or has expired.",
"error": {
"code": "unauthenticated",
"status": 401,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
403 The credential lacks the scope, the church is suspended, the feature is not in the plan, or the address is not allowed.403 example
{
"status": false,
"message": "That API key does not have the required scope.",
"error": {
"code": "permission_denied",
"status": 403,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
404 The resource is not in this church.404 example
{
"status": false,
"message": "That item is not in this church.",
"error": {
"code": "not_found",
"status": 404,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
409 Conflict, including a duplicate Idempotency-Key still being processed.409 example
{
"status": false,
"message": "A request with this Idempotency-Key is still running.",
"error": {
"code": "conflict",
"status": 409,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
422 A field failed validation, or an Idempotency-Key was reused with a different body.422 example
{
"status": false,
"message": "A field is not valid.",
"error": {
"code": "validation",
"status": 422,
"request_id": "req_b337770ecebe03b03a88a8998b59263d"
}
}
429 Rate limited. Wait Retry-After seconds.429 example