posti マニュアル

API(開発者向け・v1)

公開REST API /v1。APIキー認証・投稿/生成・データ取得・Webhook・課金/レート制限。

API(開発者向け・v1)

posti の公開 REST API を使うと、外部システムから投稿の作成・AI生成・データの取得を自動化できます。認証は API キー(Bearer トークン)です。

ブラウザで試せる API リファレンス

/v1/docs に Swagger UI(インタラクティブなAPIリファレンス)があります。全エンドポイントの入出力をその場で確認・試行できます。機械可読な仕様は /v1/openapi.json(OpenAPI 3.0)で、Postman への取り込みやSDK自動生成に使えます。

Python SDK

薄い Python クライアント(Posti クラス)を用意しています。posti.create_article(...) のように関数呼び出しで使えます。 python from posti_sdk import Posti posti = Posti(api_key="posti_xxxxxxxx") art = posti.create_article(prompt="NISAの始め方", brand_id="...")

認証

  1. サイドバーの 設定 → APIキー を開く。
  2. API キーを発行する(posti_ で始まる文字列。発行時のみ全体が表示されるので安全に保管してください)。
  3. すべてのリクエストに Authorization: Bearer <APIキー> ヘッダを付ける。

キーは再表示できません

発行時に表示されるキー全体は一度きりです。紛失した場合は新しいキーを発行してください。キーは第三者に共有しないでください。

curl -H "Authorization: Bearer posti_xxxxxxxx" https://posti.jp/v1/accounts

キーが無い・無効な場合は 401 が返ります。

ベースURL

https://posti.jp/v1

すべてのレスポンスは JSON です。ID は文字列(UUID)、日時は ISO 8601 で返ります。

課金について

APIでもクレジット消費は同じ

投稿作成・AI生成など、Web画面で課金対象の操作は API 経由でも同じようにクレジットを消費 します。残高不足の場合は 402(insufficient credits)が返り、必要クレジット数が needed に含まれます。読み取り系(GET)は課金されません。

書き込み・生成エンドポイント

メソッド パス 説明 課金
POST /v1/ads 広告をAI生成してPAUSEDで出稿(6媒体) AIバナー生成であり
POST /v1/articles 記事をAI生成して下書き作成(brand_id でKB・ペルソナ接地) 実トークン従量
POST /v1/generate/batch 複数プロンプトを一括生成(image / video / text) 件数分
POST /v1/posts 投稿を作成(kind = video / image / article)。作成後はキューに入る 共有アプリ経路のX投稿のみ
GET /v1/posts/{id} 投稿の状態と各SNSの結果を取得 無料
POST /v1/generate/image 画像を生成(prompt 必須) あり
POST /v1/generate/video 動画を生成(prompt 必須) あり
POST /v1/generate/text テキストを生成(prompt 必須) 実トークン従量
GET /v1/generations/{id} 生成ジョブの状態・結果URLを取得 無料

投稿作成の例

curl -X POST https://posti.jp/v1/posts \
  -H "Authorization: Bearer posti_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"kind":"image","media_url":"https://.../pic.png","caption":"新商品です","targets":["<account_id>"]}'
# → {"post_id":"...","status":"queued"}

targets を省略すると連携済みの全アカウントへ配信されます。scheduled_at(posti が投稿する時刻)で予約もできます。

広告作成の例

Meta / Google / TikTok / X / Pinterest / LINEヤフー の6媒体に、商材(product_id)からAIで広告を生成して出稿できます。作成される広告は必ず PAUSED(停止)状態なので、内容を確認してから各媒体の管理画面で有効化します。

# 既定は dry_run=true(下書き案のプレビュー・課金なし)。実出稿は dry_run:false を明示。
curl -X POST https://posti.jp/v1/ads \
  -H "Authorization: Bearer posti_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"platform":"pinterest","product_id":"<UUID>","daily_budget_jpy":1000,"board_id":"<board>","n_variants":3,"dry_run":false}'
パラメータ 説明
platform meta / google / tiktok / x / pinterest / lineyahoo
product_id 商材ID(/v1/products で取得)
daily_budget_jpy 日予算(100以上)
n_variants AI生成のバリアント数(1〜4・既定3)
dry_run true(既定)=案のプレビュー・課金なし / false=実出稿・クレジット消費
媒体別必須 Meta=page_id、Google=final_url・business_name、TikTok=identity_id、Pinterest=board_id(X は追加項目なし・LINEヤフーはlink_url任意)

実出稿はクレジットを消費します

dry_run:false のときのみ AIバナーを生成してクレジットを消費し、実際に各媒体へ PAUSED で出稿します。残高不足なら 402 が返ります。事前に該当媒体の広告アカウント連携(認証設定)が必要です。

記事生成の例

prompt からAIで記事本文を生成し、下書き(記事ジョブ)を作成します。brand_id を渡すと、そのブランドのペルソナ+ナレッジベース(KB)に接地して生成します(口調・知識が反映されます)。auto_post:true + scheduled_at でWordPressへ予約公開もできます。

curl -X POST https://posti.jp/v1/articles \
  -H "Authorization: Bearer posti_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"初心者向けにNISAの始め方を解説する記事","brand_id":"<UUID>"}'
# → {"job_id":"...","status":"ready","title":"...","body_html":"..."}

生成した本文は body_html で返り、下書きジョブとして保存されます。body_html を直接渡した場合は生成せず下書き保存のみ(課金なし)。課金は実際に使ったトークン量に応じた従量です。

バッチ生成の例

複数のプロンプトを1回のリクエストで一括生成します。kind は image / video / text。件数分だけクレジットを消費するため、コンテンツの量産に向きます(1リクエスト最大10件)。

curl -X POST https://posti.jp/v1/generate/batch \
  -H "Authorization: Bearer posti_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"kind":"image","prompts":["夏の海のポスター","秋の紅葉のポスター","冬の雪景色のポスター"]}'
# → {"kind":"image","count":3,"results":[{"generation_id":"...","status":"generating"},...]}

image / video は各件が非同期ジョブになり、GET /v1/generations/{id} で結果を取得します。text は各件の本文が results[].text に同期で返ります。残高が不足すると、その時点で処理を打ち切ります。

読み取りエンドポイント

いずれも API キーの所有者にひも付くデータのみを返します(他ユーザーのデータは返りません)。課金はありません。共通で ?limit(1〜200・既定50)と ?offset によるページングに対応します。

メソッド パス 説明
GET /v1/accounts 連携済みSNSアカウント一覧
GET /v1/brands 事業(ブランド)一覧
GET /v1/products 商品一覧
GET /v1/purchases 購入(購入者)一覧。?status= で絞り込み
GET /v1/leads フォーム営業の送信済みリード一覧
GET /v1/inbox/threads 受信箱スレッド一覧。?channel_type= で絞り込み
GET /v1/posts 投稿一覧。?kind= で絞り込み
GET /v1/analytics/sales 所有ブランド横断の売上サマリ。?days=(1〜365・既定30)
GET /v1/credits 現在のクレジット残高
GET /v1/usage クレジット利用履歴と期間内の消費合計。?type=(consume/grant/refund)・?days=

新着だけ取得(ポーリング用 since)

/v1/purchases・/v1/leads・/v1/inbox/threads・/v1/posts は ?since=<ISO8601> で「その日時以降の新規のみ」を取得できます。Zapier/Make などのポーリングトリガーで前回以降の差分を拾うのに使います(since の +00:00 は URL エンコードしてください)。

例

# 直近30日の売上サマリ
curl -H "Authorization: Bearer posti_xxxxxxxx" \
  "https://posti.jp/v1/analytics/sales?days=30"
# → {"period_days":30,"since":"...","revenue_jpy":128000,"orders":9}

# 未対応の受信箱スレッドをLINEに絞って取得
curl -H "Authorization: Bearer posti_xxxxxxxx" \
  "https://posti.jp/v1/inbox/threads?channel_type=line&limit=20"

返却されるのは個人情報・秘密情報を除いた安全な項目のみです(アクセストークン・決済の生ペイロード・内部IDなどは含まれません)。

Webhook(イベント通知)

posti 側のイベントを外部URLへ通知できます。

  1. サイドバーの 設定 → Webhook を開く。
  2. 通知先URLと受け取るイベントを選び、作成する(署名検証用の secret が発行される)。
  3. 「テスト送信」で疎通確認ができる。

通知できる主なイベント:

イベント 発生タイミング
purchase.completed 決済が完了した(Univapay/Stripe/PayPal)
purchase.refunded 返金された(PayPal)
subscriber.created 新しい見込み客(メール登録)が追加された
webinar.reserved ウェビナーが予約された
line.follower.added / line.follower.removed LINE友だちが増減した

通知の本文は {"event": "...", "delivery_id": "...", "created_at": "...", "data": {...}} 形式で、ヘッダに X-Posti-Event と、secret 設定時は本文のHMAC-SHA256署名 X-Posti-Signature が付きます。data にはイベント別の情報(例: purchase.completed なら purchase_id / product_name / amount_jpy / email / provider / brand_id)が入ります。

Zapier / Make 連携

posti の API はキー認証の標準的な REST なので、Zapier・Make・n8n などのノーコードツールから接続できます。

トリガー(posti → 外部) — 2通り:

アクション(外部 → posti) — 各 POST エンドポイントをそのまま呼び出す:

接続設定(汎用HTTPアクションの場合):

  1. 認証: HTTP ヘッダに Authorization: Bearer <APIキー> を設定。
  2. トリガーは GET+since(ポーリング)、またはWebhook受信。
  3. アクションは各エンドポイントへ POST(JSON ボディ)。

残高の監視で自動チャージ

GET /v1/credits を定期取得し、残高が閾値を下回ったら通知・自動チャージを走らせる、といった運用も組めます。

レート制限

API キー単位でレート制限があります(目安: 1時間あたり1000リクエスト・1分あたり100リクエスト)。制限に達すると 429(rate limit exceeded)が返るので、時間を空けて再試行してください。

エラー

ステータス 意味
400 リクエスト不正(必須項目不足など。error に理由)
401 APIキーが無い・無効
402 クレジット残高不足(needed に必要数)
404 対象が存在しない、または所有外
429 レート制限

関連ページ

posti を始めるには

posti は招待制です。招待をお持ちの方は下記からお申し込みください。

申し込む →