Base URL
Authentication
このAPIはAPIキー認証に対応しています。APIキーはユーザーアカウントに紐づいており、サーバーはキーを用いてユーザーを識別し、権限を確認します。
API機能は有料プランで提供されます。APIキーはブログ設定メニューから発行できます。
or
X-API-KEY: <your_api_key>
- • APIキーは設定画面で一度だけ表示されます。
- • 紛失した場合は「再発行(rotate)」で新しいキーを発行し、既存のキーは無効化(revoke)します。
- • POST/PATCH/DELETEは作成者(author)のみ可能なため、ご自身のAPIキーで呼び出してください。
Endpoints
Images: Upload Workflow
TTL 30 minutes · Max 8 · WebPセキュリティ上の理由により、Mikihands APIサーバーはユーザーが指定した外部URLへ直接アクセス(ダウンロード)しません。 画像を含めて投稿する場合は、まずアップロードAPIで画像を安全に登録し、レスポンスで受け取ったimage_url / image_idをご利用ください。
- • アップロード成功時にimage_url(本文に挿入)とimage_id(投稿リクエストに含める)を受け取ります。
- • image_idは30分で失効します。失効したIDは投稿に使用できません。
- • 最大8枚、ファイルサイズ5MB以下、解像度2048×2048以下。
- • 対応形式はPNG/JPEG/JPG/WebPです。アップロードされた画像はサーバー側でWebPに変換して保存されます。
- • 画像アップロードには1分あたり10回までのレート制限があります。
画像ファイルをmultipart/form-dataでアップロードします。 フィールド名はfileです。
curl -sS -X POST \ "https://api.mikihands.com/api/blogcontroller/image-upload/" \ -H "X-API-KEY: <your_api_key>" \ -F "file=@/path/to/image.webp"
{
"success": true,
"image_url": "/media/<username>/blog_img/<image_id>.webp",
"image_id": "<image_id>"
}
本文(body)にはimage_urlをMarkdownの画像記法でそのまま挿入し、リクエストのpayloadではimage_ids配列にimage_idを含めてください。
 ここに本文を続けて書きます...
{
"image_ids": ["<image_id>", "<image_id2>"]
}
- • 画像を差し替えるPATCHでは、通常bodyも一緒に送信する必要があります。
- • image_idが失効するとエラーになるため、アップロード後30分以内に投稿リクエストを完了してください。
Payload Examples
POST /api/blogcontroller/posts/
{
"title": "My first post",
"slug": "my-first-post",
"status": "PB",
"categories": "Technology, AI",
"tags": "mikihands, automation",
"meta_description": "A concise meta description...",
"body": "# Hello\\nThis is markdown."
}
- • 本文はbodyにMarkdown文字列として送信します。
- • タグに含まれる大文字は、サーバーで小文字に変換されます。
- • 画像はimage-upload APIでアップロードし、返されたimage_urlとimage_idを使用してください。
| Field | Type | Required | Notes |
|---|---|---|---|
| title | string | Required | ポストタイトル |
| slug | string | Required | 英語のSEO用スラッグ(重複不可) |
| status | string | Required | DF(Draft) / PB(Published) |
| categories | string | Required | カンマ区切りのカテゴリ一覧 |
| tags | string | Optional | カンマ区切りのタグ一覧 |
| meta_description | string | Required | SEO用の説明(300文字制限) |
| body | string | Required | Markdown 本文 |
| image_ids | string[] | Optional | 画像アップロード後に返されたID(例:["0e809...", "0e884..."]) |
PATCH /api/blogcontroller/{slug}/
{
"lang_code": "ja",
"primary_language": "en",
"translation_languages": ["ja","fr","de","ko"],
"title": "Updated title",
"status": "PB",
"categories": "Tech, AI",
"tags": "django, automation",
"meta_description": "Updated meta...",
"body": "# Updated\nNew markdown content",
"image_ids": ["0e809...", "0e884..."]
}
| Field | Type | Required | Notes |
|---|---|---|---|
| lang_code | string | Required | 更新対象の言語コード(例:en, ja) |
| primary_language | string | Required | ユーザーの主要言語(lang_code 検証用) |
| translation_languages | string[] | Required | ユーザーの翻訳言語リスト(lang_code 検証用) |
| title | string | Optional | ポストタイトル |
| status | string | Optional | DF(Draft) / PB(Published) |
| categories | string | Optional | カンマ区切り(例:"Tech","AI") |
| tags | string | Optional | カンマ区切り(例:"python","automation") |
| meta_description | string | Optional | SEO説明(推奨120〜160字) |
| body | string | Optional | Markdownテキスト。サーバー側でHTMLに変換します。 |
| image_ids | string[] | Optional | 画像アップロード後に返されたID(例:["0e809...", "0e884..."]) |
- • lang_codeは必ずprimary_languageまたはtranslation_languagesに含まれている必要があります。
- • image_idsで画像の差し替えを行う場合は、本文(body)もあわせて送信してください。
- • 応答は202 Acceptedになる場合があります。反映完了まで若干時間がかかることがあります。
DELETE /api/blogcontroller/posts/{slug}/
- • 削除は作成者(author)のみ可能です。(キーに紐づくユーザー基準)
- • 削除されたポストは復元できません。
Common Errors
- • slug の重複
- • Create で本文(body)が未指定です
- • PATCH で lang_code / primary_language / translation_languages が未指定です
- • img_name を変更する場合、本文(body)もあわせて送信してください
- — Images —
- • file が未指定です(multipart のフィールド名:file)
- • 非対応の画像フォーマット(PNG/JPEG/WebP のみ)
- • ファイルサイズ超過(最大 5MB)
- • 画像解像度超過(最大 2048×2048)
- • 投稿リクエストで image_ids の上限を超えています(最大 8 件)
- • 作成者(author)が一致しないため、修正/削除できません
- • 有料プランではありません(Not Paid Member)
- • 期限切れの image_id(TTL 30分)
- • 期限切れの image_id で画像のダウンロードまたは投稿を行いました
- • 画像アップロードのリクエストが頻繁すぎます(レート制限 / スロットリング)
Processing Notes
Mikihands Blogの一部機能は、処理に数秒〜数十秒かかる場合があります。これはAIが実際に計算処理を行い、その結果を反映する工程が含まれるためで、異常ではありません。
- • 反映が遅れることがあります: 保存/修正後、画面にすぐ表示されない場合があります。少し待ってから更新(再読み込み)すると反映されます。
- • 翻訳は順次処理されます: 複数の言語を選択した場合、言語ごとに生成されるため、全体の完了までに時間がかかることがあります。
- • AIの結果はレビュー推奨: AIは文脈を誤解したり、表現が不自然になることがあります。発行前のプレビューで最終確認を推奨します。
- • 画像/メタ情報: 自動生成された要素は、コンテンツに合わせていつでも修正できます。