Knowledge Base API

The Knowledge Base API manages knowledge entries for the authenticated shop. Complete Open Platform authentication before calling it.

Base path:

/open/v1/knowledge

You can list entries, get one entry, delete one entry, and create a user-input entry.

Entry fields

FieldTypeDescription
idstringEntry ID.
typestringEntry type, such as input-text, pdf, link, text-file, QA, correction, page, or shopify-policy.
titlestringEntry title.
contentstringEntry content. Returned only when getting one entry.
statusstringsuccess or failed.
expiredAtstring or nullExpiration time in UTC. null when the entry does not expire.
createdAtstring or nullCreation time in UTC.

List responses do not include content.

List entries

GET /open/v1/knowledge/entries

Query parameters:

NameRequiredDefaultDescription
titlenononeCase-insensitive title filter.
typenononeExact entry type.
pageno1Page number, starting at 1.
pageSizeno20Page size. Maximum is 50.
onlyExpirednofalseWhen true, only entries with an expiration time are returned.

page must be at least 1. pageSize must be from 1 to 50. Anything outside that range returns 400.

200 response:

{
  "items": [
    {
      "id": "665f0c2e0f1a2b3c4d5e6f70",
      "type": "input-text",
      "title": "shipping policy",
      "status": "success",
      "expiredAt": null,
      "createdAt": "2026-09-04T00:00:00Z"
    }
  ],
  "page": 1,
  "pageSize": 20,
  "total": 1
}

An empty result is still 200, with items set to [] and total set to 0.

Get one entry

GET /open/v1/knowledge/entries/{id}

Path parameter:

NameDescription
idEntry ID.

200 response:

{
  "id": "665f0c2e0f1a2b3c4d5e6f70",
  "type": "input-text",
  "title": "shipping policy",
  "content": "We ship in 3 days.",
  "status": "success",
  "expiredAt": null,
  "createdAt": "2026-09-04T00:00:00Z"
}

Returns 404 when the ID does not exist for the authenticated shop.

Delete one entry

DELETE /open/v1/knowledge/entries/{id}

Path parameter:

NameDescription
idEntry ID.

A successful deletion returns 204 with an empty body.

Deleting the same existing entry again is safe and also returns 204. Returns 404 when the ID has never been visible to the shop.

Create a user-input entry

POST /open/v1/knowledge/entries/user-input
Content-Type: application/json

Request body:

FieldRequiredDescription
titleyesEntry title. Blank text is rejected.
contentyesEntry content. Blank text is rejected.
{
  "title": "shipping policy",
  "content": "We ship in 3 days."
}

201 response:

{
  "id": "665f0c2e0f1a2b3c4d5e6f70"
}

A blank title or content returns 400. If the shop has reached its knowledge entry quota, the API returns 409.

This request is not idempotent. If the client retries after a timeout, it may create another entry. Store the returned id after a successful response.

Example

{baseUrl} is the Base URL shown on the credential page.

curl "{baseUrl}/open/v1/knowledge/entries?page=1&pageSize=20" \
  -H "X-Platform-Access: pk_..." \
  -H "X-Platform-Secret: sk_..."