API Docs

BlogController API

Mikihands Blog Platformの記事の作成・更新・削除を、APIで自動化できます。API経由で送信されたすべてのリクエストは、安全に検証されたうえでブログに反映されます。
開発者でなくても、OpenAIのMyGPTを使って手軽に投稿の自動化を実現できます。

Create Patch Delete Image Upload
重要なご案内
  • API機能は有料ユーザーのみご利用可能です。
  • • 本文(body)は必ず Markdown で作成してください。
  • 削除/更新は作成者(author)のみ可能です。必ずご自身のAPIキーで呼び出してください。APIキーの管理はユーザーの責任となります。
  • 不正または悪意のある利用(過度なリクエスト、制限回避の試み等)が検知された場合、サービス保護のため事前の通知なく利用を制限することがあります。その場合、残存期間分の返金は行いません

Base URL

https://api.mikihands.com

Authentication

このAPIはAPIキー認証に対応しています。APIキーはユーザーアカウントに紐づいており、サーバーはキーを用いてユーザーを識別し、権限を確認します。
API機能は有料プランで提供されます。APIキーはブログ設定メニューから発行できます。

API Key Header
Authorization: Api-Key <your_api_key>
or
X-API-KEY: <your_api_key>
サーバーは Authorization: Api-Key ...X-API-KEY のどちらにも対応しています。
APIキーの取り扱い
  • • APIキーは設定画面で一度だけ表示されます。
  • • 紛失した場合は「再発行(rotate)」で新しいキーを発行し、既存のキーは無効化(revoke)します。
  • • POST/PATCH/DELETEは作成者(author)のみ可能なため、ご自身のAPIキーで呼び出してください。

Endpoints

POST /api/blogcontroller/posts/
記事を新規に公開します。
PATCH /api/blogcontroller/posts/{slug}/
部分更新。公開済みの記事の本文・タイトル・meta description などを編集できます。
DELETE /api/blogcontroller/posts/{slug}/
削除。公開済みの記事を削除します。削除した記事は復元できません。
POST /api/blogcontroller/image-upload/
画像をアップロードします。成功時に image_url / image_id を返します。

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回までのレート制限があります。
Step 1) Upload image
POST /api/blogcontroller/image-upload/

画像ファイルを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"
成功すると、以下のようなJSONが返されます:
{
  "success": true,
  "image_url": "/media/<username>/blog_img/<image_id>.webp",
  "image_id": "<image_id>"
}
Step 2) Use in Create / Patch
POST/PATCH /api/blogcontroller/posts/...

本文(body)にはimage_urlをMarkdownの画像記法でそのまま挿入し、リクエストのpayloadではimage_ids配列にimage_idを含めてください。

Body (Markdown) 例
![cover](/media/<username>/blog_img/<image_id>.webp)

ここに本文を続けて書きます...
Create/Patch payloadに含める値
{
  "image_ids": ["<image_id>", "<image_id2>"]
}
注意
  • 画像を差し替えるPATCHでは、通常bodyも一緒に送信する必要があります。
  • image_idが失効するとエラーになるため、アップロード後30分以内に投稿リクエストを完了してください。

Payload Examples

Create (新規ポスト作成)
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."
}
Createの注意点
  • • 本文はbodyMarkdown文字列として送信します。
  • タグに含まれる大文字は、サーバーで小文字に変換されます。
  • • 画像はimage-upload APIでアップロードし、返されたimage_urlimage_idを使用してください。
Create Payload Fields
* Required
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(部分更新)
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..."]
}
PATCH Payload Fields
* Required
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..."])
PATCHの必須要件
  • lang_codeは必ずprimary_languageまたはtranslation_languagesに含まれている必要があります。
  • image_idsで画像の差し替えを行う場合は、本文(body)もあわせて送信してください。
  • • 応答は202 Acceptedになる場合があります。反映完了まで若干時間がかかることがあります。
Delete (ポスト削除)
DELETE /api/blogcontroller/posts/{slug}/
DELETE ルール
  • • 削除は作成者(author)のみ可能です。(キーに紐づくユーザー基準)
  • • 削除されたポストは復元できません

Common Errors

400 ValidationError
  • • 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 件)
403 Forbidden
  • • 作成者(author)が一致しないため、修正/削除できません
  • • 有料プランではありません(Not Paid Member)
410 Gone
  • • 期限切れの image_id(TTL 30分)
  • • 期限切れの image_id で画像のダウンロードまたは投稿を行いました
429 Too Many Requests
  • • 画像アップロードのリクエストが頻繁すぎます(レート制限 / スロットリング)
Tip
画像をアップロードしたら、30分以内に投稿リクエストを完了してください。 期限切れの場合は、あらためてアップロードしてください。

Processing Notes

Mikihands Blogの一部機能は、処理に数秒〜数十秒かかる場合があります。これはAIが実際に計算処理を行い、その結果を反映する工程が含まれるためで、異常ではありません。

  • 反映が遅れることがあります: 保存/修正後、画面にすぐ表示されない場合があります。少し待ってから更新(再読み込み)すると反映されます。
  • 翻訳は順次処理されます: 複数の言語を選択した場合、言語ごとに生成されるため、全体の完了までに時間がかかることがあります。
  • AIの結果はレビュー推奨: AIは文脈を誤解したり、表現が不自然になることがあります。発行前のプレビューで最終確認を推奨します。
  • 画像/メタ情報: 自動生成された要素は、コンテンツに合わせていつでも修正できます。
Tip
記事を公開した後でも 部分修正ロールバック が可能なので、最初から完璧を求めて無理をする必要はありません。
自動化の準備はこれで完了です。
ランディングに戻って、開発者セクションからすぐに試してみてください。
開発者 セクションへ →