更新情報をお知らせします。
この度、マネジメントAPIに APIを作成するAPI が追加されました。
これまでmicroCMSのAPI(スキーマ)の作成は管理画面からの操作のみでしたが、今回のアップデートによりAPIリクエストからも作成できるようになりました。フィールド定義やカスタムフィールドまで含めて、リクエスト1回でAPIを丸ごと作成できます。
詳細な仕様は、ドキュメントの「POST /api/v1/apis」をご覧ください。この記事では主な機能と使い方を簡単に紹介します。
主な機能
APIの名前やエンドポイント、フィールドの構成をリクエストで指定すると、そのとおりのAPIが作られます。管理画面でAPIを作るときに入力している内容を、そのままJSONで書くイメージです。
テキストや画像、日時、セレクト、コンテンツ参照、繰り返しなど、管理画面で選べるフィールドはひととおり指定できます。文字数制限などの入力チェックや初期値の設定、カスタムフィールドの定義もまとめて指定できるので、1回のリクエストでAPIが使える状態になります。
使い方
実際にAPIを作成するまでを実施してみます。
1. APIキーに権限を付与する
このマネジメントAPIにリクエストするには、使用するAPIキーに「APIの作成」の権限が必要です。
APIキー管理画面で対象のAPIキーを選択し、「マネジメントAPI(ベータ)」の「APIの作成」にチェックを入れて有効にします。

あわせて「API情報の取得(一覧・詳細)」にもチェックを入れておくと、作成したAPIのスキーマをAPI経由で確認できるので便利です。
2. サービスIDを確認する
リクエスト先のURLにサービスIDが必要です。サービスIDは管理画面左上のサービス名の下部、またはURLから確認できます。例えばURLが https://apitest.microcms.io/apis/news の場合、apitest がサービスIDです。
3. curlでPOSTリクエストを送信する
リクエストするURLは https://{サービスID}.microcms-management.io/api/v1/apis です。X-MICROCMS-API-KEY ヘッダーに権限を付与したAPIキーを指定し、リクエストボディにJSONを指定します。
まずはシンプルな例として、「タイトル」と「本文」だけを持つお知らせAPIを作成してみます。
curl \
-s \
-X POST \
-H 'X-MICROCMS-API-KEY: xxxxx' \
-H 'Content-Type: application/json' \
-d '{
"name": "お知らせ",
"endpoint": "news",
"type": "list",
"apiFields": [
{ "fieldId": "title", "name": "タイトル", "kind": "text", "required": true },
{ "fieldId": "body", "name": "本文", "kind": "richEditorV2", "required": false }
]
}' \
'https://apitest.microcms-management.io/api/v1/apis'
リクエストに成功すると、作成されたAPIのスキーマがレスポンスとして返ってきます。
{
"name": "お知らせ",
"endpoint": "news",
"type": "list",
"apiFields": [
{ "fieldId": "title", "name": "タイトル", "kind": "text", "required": true },
{ "fieldId": "body", "name": "本文", "kind": "richEditorV2", "required": false }
],
"customFields": []
}
管理画面を開くと、指定したとおりのAPIが作成されていることを確認できます。
もう少し複雑な例
バリデーションやコンテンツ参照、カスタムフィールドを使った繰り返しフィールドを含む、実運用に近いブログAPIも作成できます。
curl \
-s \
-X POST \
-H 'X-MICROCMS-API-KEY: xxxxx' \
-H 'Content-Type: application/json' \
-d '{
"name": "ブログ",
"endpoint": "blog",
"type": "list",
"apiFields": [
{
"fieldId": "title",
"name": "タイトル",
"kind": "text",
"required": true,
"isUnique": true,
"textSizeLimitValidation": { "textSize": { "min": 1, "max": 60 } }
},
{
"fieldId": "category",
"name": "カテゴリー",
"kind": "relation",
"required": true,
"referencedApiEndpoint": "categories",
"listViewFieldId": "name"
},
{
"fieldId": "status",
"name": "ステータス",
"kind": "select",
"required": false,
"multipleSelect": false,
"selectItems": [{ "value": "公開" }, { "value": "アーカイブ" }]
},
{
"fieldId": "ogimage",
"name": "OGP画像",
"kind": "media",
"required": false,
"imageSizeValidation": { "imageSize": { "width": 1200, "height": 630 } }
},
{
"fieldId": "contents",
"name": "本文",
"kind": "repeater",
"required": false,
"customFieldIds": ["cf_richtext", "cf_link"],
"repeaterCountLimitValidation": { "repeatCount": { "min": 1, "max": 30 } }
}
],
"customFields": [
{
"fieldId": "cf_richtext",
"name": "リッチテキスト",
"fields": [
{ "fieldId": "body", "name": "本文", "kind": "richEditorV2", "required": true }
],
"fieldOrderByColumn": [["body"]]
},
{
"fieldId": "cf_link",
"name": "リンクカード",
"fields": [
{ "fieldId": "label", "name": "ラベル", "kind": "text", "required": true },
{ "fieldId": "url", "name": "URL", "kind": "text", "required": true }
],
"fieldOrderByColumn": [["label", "url"]]
}
]
}' \
'https://apitest.microcms-management.io/api/v1/apis'
カスタムフィールドは customFields に定義し、repeater の customFieldIds(または custom の customFieldId)から fieldId で参照します。API本体とカスタムフィールドは同時に作成されるため、2回に分けてリクエストする必要はありません。
近日対応: MCPサーバーからも使えるようになります
先日公開した 公式リモートMCPサーバー にも、このAPIを追加する予定です。
対応後は、AIエージェントに「ブログ用のAPIを作って」と伝えるだけで、スキーマの設計からAPI作成までを任せられるようになります。対応時期については、あらためてお知らせします。
ユースケース
サービスの初期構築を自動化する
新しくサービスを立ち上げるときは、ブログ、カテゴリー、著者……と複数のAPIを一つずつ管理画面で作っていく必要がありました。APIの作成をスクリプト化しておけば、必要なAPI群をまとめて一度に用意できます。同じ構成のサイトを何度も立ち上げる制作会社の方などに特に便利です。
同じ構成を別のサービスへ展開する
既存のサービスのスキーマはAPI情報取得APIで取得できます。取得したスキーマをそのまま作成APIに渡せば、検証用サービスや別プロジェクトへ同じ構成をコピーできます。手作業での作り直しによる設定漏れを防げます。
AIエージェントにCMSの構築を任せる
MCPサーバーへの対応後は、「メディアサイトを作りたいので必要なAPIを用意して」と伝えるだけで、AIがスキーマを設計し、そのまま作成まで進められるようになります。どんなフィールドが必要かを相談しながら、その場で形にしていくような使い方ができます。
注意事項
APIの作成数はご契約プランごとに上限があります。
上限を超えて作成する場合は追加料金が発生するため、同意を示すクエリパラメータ allowAdditionalCharge=true を付けてリクエストする必要があります( POST /api/v1/apis?allowAdditionalCharge=true )。詳しくはドキュメントをご確認ください。
おわりに
今回は、APIを作成するマネジメントAPIについて紹介しました。
コンテンツだけでなくAPIの定義そのものもAPI経由で扱えるようになったことで、サービス構築の自動化やAIエージェントとの連携の幅が広がります。ぜひお試しください。
今後もより使いやすいサービスを目指してプロダクトの改善に努めてまいります。ご要望等ございましたら管理画面右下のチャットボタンよりご意見をお寄せください。