BOUNTY API(v2.0.0)

機械可読な契約は /api/v1/openapi.json(OpenAPI 3.1)です。

LP から企画を読む(認証なし)

const url = "https://<bounty>/api/v1/public/events/<slug>/plan";
const res = await fetch(url, { headers: etag ? { "If-None-Match": etag } : {} });
if (res.status === 304) return cached; // 変わっていない
const plan = await res.json(); // schemaVersion: 2
etag = res.headers.get("ETag");

const speakers = new Map(plan.speakers.map((s) => [s.id, s]));
for (const day of plan.days) {
  const blocks = plan.contents.filter((c) => c.schedule === "timed" && c.day === day);
  // c.stageId → plan.stages / c.lineId → plan.lines / c.thumbnails[].url / c.openCalls[].url
  // c.speakers[].speakerId → speakers.get(id)(bio・photo・英語の欄は確定した人だけ)
}
// 会場図: <img src={plan.map.base.image.url}> に plan.map.slots[].points を重ね、
// plan.map.assignments(day が null = 全日)の contentId → plan.contents の出展者(exhibitor.url = 公開のページ)
// 暗い地: plan.map.base.imageDark?.url(無ければ image を明るい面の上に置く)
// 会場が複数・フロアが複数のイベント: plan.areas(会場 → フロアの木)と plan.maps(葉ごとの図。areaId で結ぶ)。
// plan.map は今までどおり 1 つの図(plan.maps[0] と同じ)。plan.stages[].areaId = そのステージの会場 / フロア。
// ブース番号は会場が違えば重なりうるので、番号を出すときは会場・フロアの名前を添える(slotKey はイベントを通して一意)

認証(ネイティブ)

自分

参加登録(4S のチケット)

ハント

バウンティ

ミート

QR

WANTED

募集(BOSHU。スタッフ・登壇・ピッチ・その他)

募集の外部 API(運営の API トークン)

今会えます・注目

今日のオレ

ランキング

ギルド

学生団体 DB・学生発ベンチャー DB(登録・メンバー・学籍)

セッション(会場)

イベント(会場のベル)

メッセージ

TRIO(共通点のある 3 人の組)

通知

プッシュ通知

SPIKES のイベント一覧・イベントのページ(複数イベント・機能の ON / OFF・参加者)

フォロー(ギルド・学生発ベンチャー・イベント)

募集の持ち主の管理(イベント・ギルド・学生発ベンチャーの管理者)

運営(moderator 以上)

MCP 接続(リモート MCP の本人確認・一時アップロード・接続リンク)

契約

企業ページ・メンバーの下書きと限定リンク(会社 scope の API トークン / ログイン。公開はしない)

企業QR・明示共有名簿・公開企業への私的問い合わせ(イベントチケット不要)

コンテンツ企画(タイムテーブル・ライン・登壇者・サムネイル・コンテンツのチャット。そのイベントを企画できる人)

登壇者の限定リンク(トークンが資格。ログイン不要)

公開の読み取り(匿名・CORS *・ETag。LP 向け)

MCP 接続BOUNTY へ

開発者向け API | SPIKES — SPIKES 2026 TOKYO