公開APIを始める

アワデの主催者機能をAPIで使う方法を案内します。イベント作成、写真・動画アップロード、ステータス確認、共有リンク、プラン確認ができます。

1. APIキーを発行

ログイン後、開発者ページでキーを発行します。発行時に原文は1回だけ表示されます: /dashboard/developer

2. 最初のイベントを作成

発行したキーでイベントを作成します。レスポンスのshareLinkを参加者に渡してください:

curl -X POST https://iwasthere.pics/api/public/v1/events \
  -H "Authorization: Bearer iwt_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"My Event"}'

レスポンス例:

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "shareLink": "https://iwasthere.pics/e/abc123",
  "quota": { "events": { "used": 1, "limit": 3 } }
}

3. 写真をアップロード

photos/presignでアップロードURLを取得しS3にアップロード後、photos/completeを呼ぶとインデックスが始まります。進行状況はphotos一覧のindexingStatusで確認します。

全体ワークフロー(コピーして実行)

イベント作成から写真アップロード・インデックス確認までを一度に実行する例です。jqが必要です。

KEY="iwt_YOUR_KEY"; BASE="https://iwasthere.pics/api/public/v1"

# 1) イベント作成 → id, shareLink を取得
EV=$(curl -s -X POST "$BASE/events" -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" -d '{"name":"My Event"}')
EVENT_ID=$(echo "$EV" | jq -r .id)

# 2) ファイルごとにアップロードURLを発行
PRE=$(curl -s -X POST "$BASE/events/$EVENT_ID/photos/presign" -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"files":[{"name":"IMG_0001.jpg","size":3145728,"type":"image/jpeg"}]}')
URL=$(echo "$PRE" | jq -r '.uploads[0].url')
PHOTO_ID=$(echo "$PRE" | jq -r '.uploads[0].photoId')
S3KEY=$(echo "$PRE" | jq -r '.uploads[0].s3Key')

# 3) 元画像をS3へ直接PUT(認証ヘッダー不要、Content-Type一致)
curl -s -X PUT "$URL" -H "Content-Type: image/jpeg" --data-binary @IMG_0001.jpg

# 4) 完了処理 → サムネイル・顔インデックスをトリガー
curl -s -X POST "$BASE/events/$EVENT_ID/photos/complete" -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d "{\"uploaded\":[{\"photoId\":\"$PHOTO_ID\",\"s3Key\":\"$S3KEY\",\"fileSize\":3145728}]}"

# 5) すべてのindexingStatusがdoneになるまでポーリング
curl -s "$BASE/events/$EVENT_ID/photos" -H "Authorization: Bearer $KEY" | jq '.photos[].indexingStatus'

# 6) shareLinkを参加者に共有

プラン上限の処理

上限を超えると403レスポンスにupgradeフィールド(message, url)が含まれます。この案内をそのままユーザーに伝えてください。

{
  "error": "PHOTO_LIMIT_EXCEEDED", "current": 50, "limit": 50,
  "upgrade": {
    "message": "The free plan allows up to 50 photos per event. Pro allows up to 500.",
    "url": "https://iwasthere.pics/dashboard/plan"
  }
}

顔検索は提供されません

参加者の顔検索は公開APIでは提供されません(恒久的に非公開)。ライブネス未検証の状態で他人の顔写真による不正検索を防ぐためです。