Kanorio

API リファレンス

Authors

Management API: GET /sites/{id}/authors, POST /sites/{id}/authors, PATCH /sites/{id}/authors/{authorId}

このページは英語のみです。API リファレンス、Webhook イベント、変更履歴は、コード内のフィールド名やエラーコードと揃えるため英語で提供しています。
Base URL https://app.kanorio.com/api/v1ErrorsPagination

List authors

GET/sites/{id}/authors
betaposts:viewdefault (120/minute per token)

List the site's shared author list: post authors and deliverable instructors are the same people. Use ids in posts.create / posts.update authorIds and deliverables.update authorIds. Errors: FORBIDDEN, INVALID_CURSOR.

Parameters

  • idstring · pathrequired

    Website id. Get it from sites.list or from sites.create.

  • limitinteger · query

    Maximum number of items to return, 1–100. Defaults to 20.

  • cursorstring · query

    Opaque cursor from the previous page's nextCursor. Omit for the first page.

Response 200

  • dataobject[]required
  • data[].idstringrequired
  • data[].slugstringrequired

    Use it in Delivery API filters: /api/v1/products?author=<slug> (courses they teach) and the blog author filter.

  • data[].namestringrequired
  • data[].titlestring | nullrequired

    Job title or credential shown next to the name, e.g. Head Chef.

  • data[].avatarstring | nullrequired

    Displayable image URL.

  • data[].avatarAssetIdstring | nullrequired

    Media library asset id of the avatar, when it is in the library.

  • data[].biostring | nullrequired
  • data[].urlstring | nullrequired

    Personal website or social profile; the name on courses links here.

  • data[].countsobjectrequired
  • data[].counts.postsintegerrequired

    Published posts.

  • data[].counts.deliverablesintegerrequired

    Deliverables where this person is an instructor.

  • hasMorebooleanrequired

    True when another page exists; pass nextCursor to fetch it.

  • nextCursorstring | nullrequired

    Cursor for the next page, or null on the last page.

Errors

  • FORBIDDEN 403
  • INVALID_CURSOR 400

MCP tool authors_list

curl -X GET "https://app.kanorio.com/api/v1/sites/{id}/authors" \
  -H "Authorization: Bearer $KANORIO_TOKEN"
Response
{
  "data": [
    {
      "id": "author_example01",
      "slug": "sunny",
      "name": "Sunny",
      "title": "Head Baker",
      "avatar": "https://imagedelivery.net/example/sunny/avatar",
      "avatarAssetId": "asset_example01",
      "bio": "Runs the bakehouse and teaches the sourdough course.",
      "url": "https://sunny.example.com",
      "counts": {
        "posts": 12,
        "deliverables": 1
      }
    }
  ],
  "hasMore": false,
  "nextCursor": null
}

Create an author

POST/sites/{id}/authors
betablog:managedefault (120/minute per token)

Add a person to the site's shared author list (post authors and deliverable instructors are the same list). Then attach them with deliverables.update { authorIds } or posts.update { authorIds }. A blog author page only exists once they have a published post. Errors: FORBIDDEN, VALIDATION, SLUG_TAKEN, ASSET_NOT_FOUND (avatarAssetId not in this site's media library), ASSET_NOT_ALLOWED (avatar must be an image).

Parameters

  • idstring · pathrequired

    Website id. Get it from sites.list or from sites.create.

Request body

  • namestringrequired
  • slugstring

    Generated from name when omitted.

  • titlestring

    Job title or credential, e.g. Head Chef. Empty string clears it.

  • avatarAssetIdstring | null

    Image asset id from the media library (media.upload first); null removes the avatar.

  • biostring
  • urlstring

    Personal website or social profile. Empty string clears it.

Response 201

  • authorobjectrequired
  • author.idstringrequired
  • author.slugstringrequired

    Use it in Delivery API filters: /api/v1/products?author=<slug> (courses they teach) and the blog author filter.

  • author.namestringrequired
  • author.titlestring | nullrequired

    Job title or credential shown next to the name, e.g. Head Chef.

  • author.avatarstring | nullrequired

    Displayable image URL.

  • author.avatarAssetIdstring | nullrequired

    Media library asset id of the avatar, when it is in the library.

  • author.biostring | nullrequired
  • author.urlstring | nullrequired

    Personal website or social profile; the name on courses links here.

  • author.countsobjectrequired
  • author.counts.postsintegerrequired

    Published posts.

  • author.counts.deliverablesintegerrequired

    Deliverables where this person is an instructor.

Errors

  • FORBIDDEN 403
  • VALIDATION 400
  • SLUG_TAKEN 409
  • ASSET_NOT_FOUND 404 · avatarAssetId not in this site's media library
  • ASSET_NOT_ALLOWED 422 · avatar must be an image

MCP tool authors_create

curl -X POST "https://app.kanorio.com/api/v1/sites/{id}/authors" \
  -H "Authorization: Bearer $KANORIO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Sunny","title":"Head Baker","avatarAssetId":"asset_example01","url":"https://sunny.example.com"}'
Response
{
  "author": {
    "id": "author_example01",
    "slug": "sunny",
    "name": "Sunny",
    "title": "Head Baker",
    "avatar": "https://imagedelivery.net/example/sunny/avatar",
    "avatarAssetId": "asset_example01",
    "bio": null,
    "url": "https://sunny.example.com",
    "counts": {
      "posts": 0,
      "deliverables": 0
    }
  }
}

Update an author

PATCH/sites/{id}/authors/{authorId}
betablog:managedefault (120/minute per token)

Update a person on the shared author list; the change shows on their posts and the courses they teach. Only provided fields change. Errors: AUTHOR_NOT_FOUND, FORBIDDEN, VALIDATION, SLUG_TAKEN, ASSET_NOT_FOUND (avatarAssetId not in this site's media library), ASSET_NOT_ALLOWED (avatar must be an image).

Parameters

  • idstring · pathrequired

    Website id. Get it from sites.list or from sites.create.

  • authorIdstring · pathrequired

Request body

  • namestring
  • slugstring
  • titlestring

    Job title or credential, e.g. Head Chef. Empty string clears it.

  • avatarAssetIdstring | null

    Image asset id from the media library (media.upload first); null removes the avatar.

  • biostring
  • urlstring

    Personal website or social profile. Empty string clears it.

Response 200

  • authorobjectrequired
  • author.idstringrequired
  • author.slugstringrequired

    Use it in Delivery API filters: /api/v1/products?author=<slug> (courses they teach) and the blog author filter.

  • author.namestringrequired
  • author.titlestring | nullrequired

    Job title or credential shown next to the name, e.g. Head Chef.

  • author.avatarstring | nullrequired

    Displayable image URL.

  • author.avatarAssetIdstring | nullrequired

    Media library asset id of the avatar, when it is in the library.

  • author.biostring | nullrequired
  • author.urlstring | nullrequired

    Personal website or social profile; the name on courses links here.

  • author.countsobjectrequired
  • author.counts.postsintegerrequired

    Published posts.

  • author.counts.deliverablesintegerrequired

    Deliverables where this person is an instructor.

Errors

  • AUTHOR_NOT_FOUND 404
  • FORBIDDEN 403
  • VALIDATION 400
  • SLUG_TAKEN 409
  • ASSET_NOT_FOUND 404 · avatarAssetId not in this site's media library
  • ASSET_NOT_ALLOWED 422 · avatar must be an image

MCP tool authors_update

curl -X PATCH "https://app.kanorio.com/api/v1/sites/{id}/authors/{authorId}" \
  -H "Authorization: Bearer $KANORIO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Head Baker & Instructor"}'
Response
{
  "author": {
    "id": "author_example01",
    "slug": "sunny",
    "name": "Sunny",
    "title": "Head Baker & Instructor",
    "avatar": null,
    "avatarAssetId": null,
    "bio": null,
    "url": null,
    "counts": {
      "posts": 12,
      "deliverables": 1
    }
  }
}