コンテンツ API
コンテンツ API には、ソーシャルメディアへの公開ジョブを作成・予約・確認・キャンセルするエンドポイントと、メディアをアップロードするエンドポイントがあります。
📌 エンドポイント
Section titled “📌 エンドポイント”| メソッド | パス | 説明 | 必要なスコープ |
|---|---|---|---|
POST | /v1/brand/contents/uploads | 画像および動画アップロード用の署名付き PUT URL を生成 | publishing:create または * |
POST | /v1/brand/contents | 即時または予約投稿を送信 (202 Accepted) | publishing:create または * |
GET | /v1/brand/contents | ページネーションとステータスフィルタを使用してブランドコンテンツを一覧表示 | publishing:read または * |
GET | /v1/brand/contents/{content_id} | コンテンツの詳細と公開ジョブの結果を取得 | publishing:read または * |
DELETE | /v1/brand/contents/{content_id}/cancel | 処理が開始される前に予約投稿をキャンセル | publishing:delete または * |
1. メディアアップロード用の署名付き URL (POST /v1/brand/contents/uploads)
Section titled “1. メディアアップロード用の署名付き URL (POST /v1/brand/contents/uploads)”投稿にメディアを添付するには、署名付きアップロード URL をリクエストし、HTTP PUT を介して S3/R2 ストレージにバイナリを直接アップロードします。
サポートされているメディア形式
Section titled “サポートされているメディア形式”- 画像 (最大 20MB, URL 有効期限 300秒):
image/jpeg,image/png,image/webp,image/gif - 動画 (最大 500MB, URL 有効期限 600秒):
video/mp4,video/quicktime(.mov),video/webm
リクエスト例
Section titled “リクエスト例”curl -X POST "https://api.ankk.app/v1/brand/contents/uploads" \ -H "Authorization: Bearer spk_live_xxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "filename": "launch-banner.png", "content_type": "image/png", "size": 1420500 }'レスポンス例 (200 OK)
Section titled “レスポンス例 (200 OK)”{ "upload_url": "https://storage.ankk.app/sns-posts/original/brand_.../launch-banner.png?X-Amz-Signature=...", "asset_ref": "https://cdn.ankk.app/sns-posts/original/brand_.../launch-banner.png", "method": "PUT", "object_key": "sns-posts/original/brand_.../launch-banner.png", "content_type": "image/png", "size": 1420500, "expires_in_seconds": 300}PUT によるバイナリのアップロード
Section titled “PUT によるバイナリのアップロード”curl -X PUT "<upload_url>" \ -H "Content-Type: image/png" \ --data-binary "@/path/to/launch-banner.png"2. コンテンツの公開 (POST /v1/brand/contents)
Section titled “2. コンテンツの公開 (POST /v1/brand/contents)”テキストとアップロードされた asset_ref を送信して、公開ジョブを作成します。
リクエストボディのフィールド
Section titled “リクエストボディのフィールド”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
connection_id | string | 必須 | 対象となる SNS 接続 ID (接続 API) |
idempotency_key | string | 必須 | 重複送信を防止するためのクライアント生成のユニークなキー |
text | string | 任意 | 投稿の本文テキスト |
media | array | 任意 | url または asset_ref を持つメディアオブジェクトの配列 |
scheduled_for | string | 任意 | スケジュール用の ISO 8601 タイムスタンプ。即時公開の場合は省略 |
thread_posts | array | 任意 | Threads のスレッド作成用の追加投稿 |
provider_settings | object | 任意 | プラットフォーム固有の設定 (例: YouTube カテゴリ) |
リクエスト例 (即時投稿)
Section titled “リクエスト例 (即時投稿)”curl -X POST "https://api.ankk.app/v1/brand/contents" \ -H "Authorization: Bearer spk_live_xxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "connection_id": "conn_01jm8x9k2example", "idempotency_key": "launch-2026-001", "text": "Excited to launch our new product today! 🚀\nhttps://ankk.app", "media": [ { "url": "https://cdn.ankk.app/sns-posts/original/brand_.../launch-banner.png" } ] }'レスポンス例 (202 Accepted)
Section titled “レスポンス例 (202 Accepted)”{ "content_id": "content_01jm8za2example", "status": "scheduled", "publish_job_id": "job_01jm8za2jobexample", "connection_id": "conn_01jm8x9k2example", "idempotency_key": "launch-2026-001"}3. コンテンツの一覧表示と確認
Section titled “3. コンテンツの一覧表示と確認”コンテンツの一覧表示 (GET /v1/brand/contents)
Section titled “コンテンツの一覧表示 (GET /v1/brand/contents)”curl -X GET "https://api.ankk.app/v1/brand/contents?status=published&limit=20" \ -H "Authorization: Bearer spk_live_xxxxxxxx"コンテンツ詳細の取得 (GET /v1/brand/contents/{content_id})
Section titled “コンテンツ詳細の取得 (GET /v1/brand/contents/{content_id})”curl -X GET "https://api.ankk.app/v1/brand/contents/content_01jm8za2example" \ -H "Authorization: Bearer spk_live_xxxxxxxx"4. 予約投稿のキャンセル (DELETE /v1/brand/contents/{content_id}/cancel)
Section titled “4. 予約投稿のキャンセル (DELETE /v1/brand/contents/{content_id}/cancel)”scheduled ステータスの投稿を、実行が開始される前にキャンセルします。
curl -X DELETE "https://api.ankk.app/v1/brand/contents/content_01jm8za2example/cancel" \ -H "Authorization: Bearer spk_live_xxxxxxxx"