エントリーを取り出す(一覧、1 件、シングル)
Content API で、公開中のエントリーを取り出します。コレクションのコンテンツタイプからは一覧と 1 件を、シングルのコンテンツタイプからはその 1 件を取り出せます。
- [読み取り]の権限のある API キー。発行のしかたは API キーを作る、権限を決める にあります
- 取り出すエントリーが[公開中]になっていること。下書きは返りません。下書きを取るときは 下書きを取る(プレビュー) を見てください
- コンテンツタイプ ID。コンテンツタイプの画面で[エンドポイント]と出ている値です(例:「posts」)
下の例では、次の値を置き換えてください。
<ホスト名>:あなたの環境のホスト名。管理画面のアドレスhttps://<ホスト名>.hakocms.netの部分です<API キー>:hako_で始まる API キー
URL の形
Section titled “URL の形”| 取り出すもの | URL |
|---|---|
| コレクションの一覧 | /api/v1/content/<コンテンツタイプ ID> |
| コレクションの 1 件 | /api/v1/content/<コンテンツタイプ ID>/<エントリー ID> |
| シングル | /api/v1/content/<コンテンツタイプ ID> |
スペースは、API キーから決まります。URL にスペースを入れる必要はありません。
一覧を取り出す
Section titled “一覧を取り出す”コンテンツタイプ「posts」の公開中のエントリーを、一覧で取り出します。
curl https://<ホスト名>.hakocms.net/api/v1/content/posts \ -H "Authorization: Bearer <API キー>"次のように返ります。
{ "items": [ { "sys": { "id": "hello", "contentType": "posts", "createdAt": "2026-10-08T05:00:00.000Z", "updatedAt": "2026-10-08T06:10:00.000Z", "publishedAt": "2026-10-08T06:10:00.000Z", "firstPublishedAt": "2026-10-08T05:00:00.000Z", "version": 3 }, "title": "こんにちは", "tags": ["news"] } ], "total": 1, "limit": 20, "offset": 0}| 項目 | 中身 |
|---|---|
items |
エントリーの配列。既定では、公開した日時の新しい順 |
total |
条件に当てはまるエントリーの数。limit と offset で区切る前の数 |
limit offset |
使った値 |
1 回に返るのは、既定で 20 件までです。続きを取る、並べ替える、絞り込むときは、絞り込む、並べる、ページに分ける を見てください。
1 件を取り出す
Section titled “1 件を取り出す”エントリー ID が「hello」のエントリーを取り出します。URL の最後にエントリー ID を付けます。
curl https://<ホスト名>.hakocms.net/api/v1/content/posts/hello \ -H "Authorization: Bearer <API キー>"エントリーが 1 つ、そのまま返ります。一覧の items の 1 つと同じ形です。
{ "sys": { "id": "hello", "contentType": "posts", "createdAt": "2026-10-08T05:00:00.000Z", "updatedAt": "2026-10-08T06:10:00.000Z", "publishedAt": "2026-10-08T06:10:00.000Z", "firstPublishedAt": "2026-10-08T05:00:00.000Z", "version": 3 }, "title": "こんにちは", "tags": ["news"]}エントリーがないとき、または公開していないときは 404 が返ります。
シングルを取り出す
Section titled “シングルを取り出す”シングルのコンテンツタイプ(例:サイトの設定を入れる「site-settings」)は、エントリー ID を付けずに取り出します。
curl https://<ホスト名>.hakocms.net/api/v1/content/site-settings \ -H "Authorization: Bearer <API キー>"エントリーが 1 つ、そのまま返ります。まだ公開していなければ 404 が返ります。シングルの URL にエントリー ID を付けても 404 になります。
JavaScript から取り出す
Section titled “JavaScript から取り出す”ブラウザでも、サーバーでも、fetch で同じように取り出せます。Content API は、どのオリジンからでも呼べます。
const res = await fetch( "https://<ホスト名>.hakocms.net/api/v1/content/posts", { headers: { Authorization: "Bearer <API キー>" } },);if (!res.ok) { const { error } = await res.json(); throw new Error(`${res.status} ${error.code}: ${error.message}`);}const { items, total } = await res.json();console.log(total, items.map((entry) => entry.title));ブラウザに渡してよいのは、[読み取り]だけのキーです。ほかの権限を持つキーは、サーバーの中だけで使ってください。
エントリーは、sys のあとに、コンテンツタイプのフィールドがスキーマの順に並びます。
sys の項目 |
中身 |
|---|---|
id |
エントリー ID。シングルにもあります |
contentType |
コンテンツタイプ ID |
createdAt |
作った日時 |
updatedAt |
最後に保存した日時 |
publishedAt |
今の公開版を公開した日時 |
firstPublishedAt |
最初に公開した日時 |
version |
返した値の版の番号。書き込むときの確かめに使います |
日時は、すべて UTC の ISO 8601 で、ミリ秒まで入ります(2026-10-08T06:10:00.000Z)。
フィールドの値は、フィールドの種類で形が決まります。
| フィールドの種類 | 値 | 値がないとき |
|---|---|---|
| テキスト、テキストエリア | 文字列。改行は \n |
キーがない |
| リッチテキスト | JSON(Hako Rich Text v1) | キーがない |
| 画像 | { "url", "width", "height", "alt" } |
キーがない |
| 複数画像 | 画像の配列 | [] |
| ファイル | { "url", "fileSize" } |
キーがない |
| 日時 | UTC の ISO 8601 | キーがない |
| 真偽値 | true か false |
false |
| セレクト | 選んだ値の配列。1 つでも配列 | [] |
| 数値 | 数値 | キーがない |
| 参照 | 参照先のエントリー | キーがない |
| 複数参照 | 参照先のエントリーの配列 | [] |
| カスタム | fieldId(カスタムフィールドの ID)と、中のフィールドを持つオブジェクト |
キーがない |
| 繰り返し | カスタムの値の配列 | [] |
画像の width、height、alt は、ないこともあります。配列になる種類と真偽値は、値がなくてもいつも返ります。そのほかの種類は、値がないとキーごと返りません。
参照の扱いは 参照の先も一緒に取る、画像の大きさや形式を変えて出すしかたは 画像を変換して出す にあります。各種類の詳しい形は フィールドの種類と値の形 にあります。
本文(リッチテキスト)を HTML で受け取る
Section titled “本文(リッチテキスト)を HTML で受け取る”リッチテキストのフィールドは、既定では JSON で返ります。
"body": { "type": "doc", "content": [ { "type": "paragraph", "content": [{ "type": "text", "text": "こんにちは。" }] } ]}HTML の文字列で受け取るときは、richText=html を付けます。
curl -G https://<ホスト名>.hakocms.net/api/v1/content/posts/hello \ -H "Authorization: Bearer <API キー>" \ -d richText=htmlbody が HTML の文字列で返ります。JSON の形は リッチテキストの形(Hako Rich Text v1) にあります。
要るフィールドだけを受け取る
Section titled “要るフィールドだけを受け取る”select に、返してほしいキーをカンマ区切りで書くと、そのキーだけが返ります。sys の中は、ドットでたどります。一覧と 1 件のどちらにも使えます。
curl -G https://<ホスト名>.hakocms.net/api/v1/content/posts/hello \ -H "Authorization: Bearer <API キー>" \ --data-urlencode "select=sys.id,title"次のように返ります。
{ "sys": { "id": "hello" }, "title": "こんにちは" }参照先のフィールドも、author.name のようにドットでたどって選べます。カスタムフィールドの中も同じです。
1 回の応答は 5 MB までです。超えると 400 が返ります。一覧が大きいときは、limit や select で減らしてください。
一覧で total が 1 以上なら、公開中のエントリーを取り出せています。思ったように返らないときは、次の表を見てください。
| 返ってきたもの | 原因 | 直し方 |
|---|---|---|
401 unauthorized |
API キーがない、違う、または失効している | Authorization: Bearer のあとに、hako_ で始まるキーをそのまま入れているか確かめます |
403 forbidden |
キーに、そのコンテンツタイプを読む権限がない | [API キー]の画面で、キーの[読み取り]を確かめます。[個別に設定]のコンテンツタイプは、個別の権限だけで決まります |
404 not_found |
コンテンツタイプかエントリーがない、または公開していない | URL のコンテンツタイプ ID が[エンドポイント]と同じか、エントリーが[公開中]か確かめます |
400 bad_request で unknown parameter |
知らないパラメーター、または一覧だけのパラメーターを 1 件に付けた | message に、使えるパラメーターが出ます。綴りを確かめます |
ほかのエラーは エラーの一覧 にあります。