Skip to content
FolioSign inStart your trial

API reference

Public Ask

Ask on a church's public page.

GET/v1/public/{church}/ask

Is public Ask on for a church?#

Tells a page whether to show an Ask box for the church.

Auth. None. This route is public.

Auth
No key
Operation id
publicAskStatus

Parameters

Parameters
NameInDescription
church requiredpathThe church slug, such as grace-chapel. For partner routes, the customer church id (org_) or slug. (string, e.g. grace-chapel)

Responses

200 Success. Is public Ask on for a church?.
200 example
{
  "status": true,
  "message": "ask",
  "data": {
    "object": "ask",
    "church": "grace-chapel",
    "name": "Grace Chapel",
    "enabled": true
  }
}
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"
  }
}
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"
  }
}
500 Something went wrong. Quote error.request_id.
500 example
{
  "status": false,
  "message": "Something went wrong. Quote the request id to support.",
  "error": {
    "code": "internal",
    "status": 500,
    "request_id": "req_b337770ecebe03b03a88a8998b59263d"
  }
}

Code samples

curl -X GET "$FOLIO_API_URL/v1/public/grace-chapel/ask"

POST/v1/public/{church}/ask

Ask on a church's public page#

Asks a question from the church's public site, optionally about one published note (note_slug). The answer is drawn from the church's published and approved teaching only. Like the widget, the response is pending until you poll GET /v1/public/{church}/ask/messages/{message}.

Auth. None. This route is public.

Plan. Needs the Ask feature; each new question counts against the Ask allowance.

Auth
No key
Plan
Needs the Ask feature; each new question counts against the Ask allowance.
Operation id
publicAskTurn

Parameters

Parameters
NameInDescription
church requiredpathThe church slug, such as grace-chapel. For partner routes, the customer church id (org_) or slug. (string, e.g. grace-chapel)

Request body

Request body fields
FieldTypeDescription
note_slugstringAsk about this published note.
questionstringThe question, up to 1000 characters.
sessionstringAn anonymous visitor id you generate: 16 to 128 URL-safe characters.
Example request body
{
  "question": "What did we teach about forgiveness?",
  "session": "k3n9x2m8q1w7e5r4t6y0"
}

Responses

200 Success. Ask on a church's public page.
200 example
{
  "status": true,
  "message": "widget_answer",
  "data": {
    "object": "widget_answer",
    "answer": "",
    "blocks": [],
    "follow_ups": [],
    "sources": [],
    "next_steps": [],
    "conversation_id": "conv_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
    "message_id": "msg_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
    "status": "pending",
    "poll_after_ms": 800
  }
}
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"
  }
}
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 The visitor asked too quickly.
429 example
{
  "status": false,
  "message": "Please wait a little before asking again.",
  "error": {
    "code": "rate_limited",
    "status": 429,
    "request_id": "req_b337770ecebe03b03a88a8998b59263d"
  }
}
500 Something went wrong. Quote error.request_id.
500 example
{
  "status": false,
  "message": "Something went wrong. Quote the request id to support.",
  "error": {
    "code": "internal",
    "status": 500,
    "request_id": "req_b337770ecebe03b03a88a8998b59263d"
  }
}

Code samples

curl -X POST "$FOLIO_API_URL/v1/public/grace-chapel/ask" \
  -H "Content-Type: application/json" \
  -d '{
  "question": "What did we teach about forgiveness?",
  "session": "k3n9x2m8q1w7e5r4t6y0"
}'

GET/v1/public/{church}/ask/messages/{message}

Poll a public answer#

Returns the current state of an answer from public Ask. Pass wait seconds to hold the request open.

Auth. None. This route is public.

Auth
No key
Operation id
publicAskMessage

Parameters

Parameters
NameInDescription
church requiredpathThe church slug, such as grace-chapel. For partner routes, the customer church id (org_) or slug. (string, e.g. grace-chapel)
message requiredpathThe message id, such as msg_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012. (string, e.g. msg_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012)
sessionqueryThe anonymous visitor id you generated: 16 to 128 URL-safe characters. Use the same one for follow-ups. (string, e.g. k3n9x2m8q1w7e5r4t6y0)
waitquerySeconds to hold the request open until the answer is ready, up to the server's cap. (integer, e.g. 10)

Responses

200 Success. Poll a public answer.
200 example
{
  "status": true,
  "message": "widget_answer",
  "data": {
    "object": "widget_answer",
    "answer": "Forgiveness is a decision to release a debt, as God released ours. [1]",
    "blocks": [
      {
        "type": "paragraph",
        "text": "Pastor Ade taught that forgiving is releasing the debt. [1]",
        "source_refs": [
          1
        ]
      }
    ],
    "follow_ups": [
      "What did we teach about reconciliation?"
    ],
    "sources": [
      {
        "number": 1,
        "title": "Seventy times seven",
        "excerpt": "We forgive because we were forgiven."
      }
    ],
    "next_steps": [],
    "conversation_id": "conv_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
    "message_id": "msg_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012",
    "status": "complete"
  }
}
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"
  }
}
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"
  }
}
500 Something went wrong. Quote error.request_id.
500 example
{
  "status": false,
  "message": "Something went wrong. Quote the request id to support.",
  "error": {
    "code": "internal",
    "status": 500,
    "request_id": "req_b337770ecebe03b03a88a8998b59263d"
  }
}

Code samples

curl -X GET "$FOLIO_API_URL/v1/public/grace-chapel/ask/messages/msg_0192f7a8-3b1c-7d2e-9a40-5c6d7e8f9012?session=k3n9x2m8q1w7e5r4t6y0&wait=10"

GET/v1/public/{church}/ask/shares/{token}

Read a conversation shared by link#

A conversation a member shared by link. The token in the link is the only credential: anyone who has it can read the conversation, and the member can revoke it at any time (410 afterwards).

Auth. None. This route is public.

Auth
No key
Operation id
publicConversationShare

Parameters

Parameters
NameInDescription
If-None-MatchheaderThe ETag of the copy you already hold. If it is current the answer is 304 with no body. (string)
church requiredpathThe church slug, such as grace-chapel. For partner routes, the customer church id (org_) or slug. (string, e.g. grace-chapel)
token requiredpathThe share token from the shared link. (string, e.g. shr_k3n9x2)

Responses

200 Success. Read a conversation shared by link.
200 example
{
  "status": true,
  "message": "conversation_share",
  "data": {
    "object": "conversation_share",
    "church": "grace-chapel",
    "title": "Forgiveness",
    "messages": []
  }
}
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"
  }
}
404 Nothing is published at that address.
404 example
{
  "status": false,
  "message": "That share is not available.",
  "error": {
    "code": "not_found",
    "status": 404,
    "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"
  }
}
500 Something went wrong. Quote error.request_id.
500 example
{
  "status": false,
  "message": "Something went wrong. Quote the request id to support.",
  "error": {
    "code": "internal",
    "status": 500,
    "request_id": "req_b337770ecebe03b03a88a8998b59263d"
  }
}

Code samples

curl -X GET "$FOLIO_API_URL/v1/public/grace-chapel/ask/shares/shr_k3n9x2"

GET/v1/public/{church}/ask/{slug}

Read a published answer#

A reviewed answer the church published, with its sources and standing: whether a source teaching has since been superseded or retracted.

Auth. None. This route is public.

Auth
No key
Operation id
publicAsk

Parameters

Parameters
NameInDescription
If-None-MatchheaderThe ETag of the copy you already hold. If it is current the answer is 304 with no body. (string)
church requiredpathThe church slug, such as grace-chapel. For partner routes, the customer church id (org_) or slug. (string, e.g. grace-chapel)
slug requiredpathThe slug from the share URL. (string, e.g. love-that-waits)

Responses

200 Success. Read a published answer.
200 example
{
  "status": true,
  "message": "share",
  "data": {
    "object": "share",
    "church": "grace-chapel",
    "kind": "answer",
    "slug": "forgiveness",
    "title": "What did we teach about forgiveness?",
    "summary": "Forgiveness is a decision to release a debt.",
    "payload": {
      "question": "What did we teach about forgiveness?",
      "short": "Forgiveness is a decision to release a debt. [1]",
      "blocks": [
        {
          "h": "",
          "p": "Pastor Ade taught that forgiving is releasing the debt. [1]"
        }
      ],
      "sources": [
        {
          "n": 1,
          "t": "Seventy times seven",
          "by": "Pastor Ade"
        }
      ],
      "reviewed": true,
      "standing": "current"
    },
    "published_at": "2026-11-01T12:31:00Z",
    "indexable": true,
    "unlisted": 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"
  }
}
404 Nothing is published at that address.
404 example
{
  "status": false,
  "message": "That share is not available.",
  "error": {
    "code": "not_found",
    "status": 404,
    "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"
  }
}
500 Something went wrong. Quote error.request_id.
500 example
{
  "status": false,
  "message": "Something went wrong. Quote the request id to support.",
  "error": {
    "code": "internal",
    "status": 500,
    "request_id": "req_b337770ecebe03b03a88a8998b59263d"
  }
}

Code samples

curl -X GET "$FOLIO_API_URL/v1/public/grace-chapel/ask/love-that-waits"

Verified against API version 0.0.0-dev. Generated from the live OpenAPI document.