協力会社パートナー API v1
株式会社KIZUNA | サプライヤーシステム連携リファレンス | 2026-06-30 初版
日本語
中文
English
バス会社等の協力会社さまの自社システムと KIZUNA プラットフォームを接続するための REST API です。事業者ポータルで行う操作(見積提出・配車の承諾/拒否・運行報告・精算確認)とマスターデータ同期を、機械同士で行えます。
本書はサプライヤー(供給側)連携のみを対象とします。販売パートナー向けの AI 見積・AI コンシェルジュ連携は、秘密保持契約締結後に個別提示する「技術条件書」で扱います。
0. 接続開始まで(オンボーディング)
手順 内容
1. 登録 事業者ポータルの新規登録 から会社情報を送信(既存の協力会社さまは不要)
2. 審査 KIZUNA が内容を確認し、事業者ポータルを有効化します
3. トークン交付 API トークンは KIZUNA 担当者から安全な経路で交付します(ポータル画面には表示されません。失効・再発行はいつでも可能)
4. 疎通確認 下記 GET /api/provider/v1/me で接続テスト
5. 連携開発 本書のとおり実装。技術的なご相談は KIZUNA 担当者まで
1. 基本仕様
ベース URL: https://splendor-star.co.jp
形式: JSON(UTF-8)/日付 YYYY-MM-DD・日時 ISO 8601
認証: Authorization: Bearer <APIトークン>(全エンドポイント必須)
レート制限: 1 分あたり 120 リクエスト / 1 トークン(超過は 429)
curl -H "Authorization: Bearer $TOKEN" \
https://splendor-star.co.jp/api/provider/v1/me
{"data": {"id": 8, "name": "○○交通株式会社",
"provider_type": "bus_company", "api_version": "v1"}}
エラー形式(共通)
{"error": {"code": "deadline_passed", "message": "Quote deadline has passed"}}
成功時は必ず {"data": ...} に包まれます。存在しない ID と他社の ID はどちらも 404 not_found です(他社データは見えない設計)。
2. 見積依頼(RFQ)
GET /api/provider/v1/rfqs
自社が招待されている見積依頼の一覧(回答期限の近い順・最大 200 件)。?state=open で回答期限内・未確定のものだけに絞れます。
{"data": [{
"id": 31, "number": "RFQ-26-0031", "state": "sent",
"route_description": "東京・箱根・京都・大阪 ゴールデンルート 24名",
"date_start": "2026-10-01", "date_end": "2026-10-04",
"start_time": 8.0, "end_time": 18.0,
"pickup_location": "成田空港", "dropoff_location": "関西空港",
"vehicle_type": "minibus", "pax_count": 24, "bus_count": 1,
"estimated_km": 360.0, "deadline": "2026-09-05T12:00:00",
"my_quote": null
}]}
GET /api/provider/v1/rfqs/{id}
単一の見積依頼。my_quote に自社の見積が入ります(未提出なら null)。
POST /api/provider/v1/rfqs/{id}/quote
見積の提出。確定前であれば同じエンドポイントで更新できます(送信したフィールドのみ更新される PATCH 方式 。未送信フィールドは保持されます)。
フィールド 型 必須 説明
total_pricenumber ✔ 総額(JPY)
price_breakdownstring 内訳メモ(2000 字まで)
includes_tolls / includes_parking / includes_driver_mealsbool 高速・駐車場・乗務員食事の込み/別(JSON の true/false のみ)
vehicle_id / driver_idint 自社車両/乗務員 ID(§5 で取得。他社 ID は 422)
vehicle_typestring sedan / van / minibus / large_bus
vehicle_seatsint 座席数
vehicle_name / driver_namestring ID を使わない場合の自由記載
valid_untildate 見積有効期限
notesstring 備考(2000 字まで)
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"total_price": 312000, "vehicle_id": 99, "driver_id": 129,
"includes_tolls": true, "notes": "高速・駐車場込み"}' \
https://splendor-star.co.jp/api/provider/v1/rfqs/31/quote
成功: 201 + 見積 JSON(state: "submitted")。
エラー 状態 意味
rfq_closed409 既に確定/キャンセル済み
deadline_passed409 回答期限超過
invalid_price400 total_price が正の数でない
foreign_vehicle_id / foreign_driver_id422 自社に属さないリソース ID
quote_locked409 採用/不採用が確定した見積は変更不可
POST /api/provider/v1/rfqs/{id}/withdraw
提出済み見積の取り下げ。
3. 配車(受注後の運行)
見積が採用されると運行日ごとに配車オーダーが作成されます。
GET /api/provider/v1/dispatches
自社の配車一覧。絞り込み: ?state=assigned|confirmed|in_progress|completed|cancelled、?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD(最大 500 件)。
{"data": [{
"id": 120, "number": "DSP-26-0120", "state": "assigned",
"provider_response": "pending",
"date": "2026-10-01", "start_time": 8.0, "end_time": 18.0,
"pickup_location": "成田空港", "dropoff_location": "ホテル",
"rfq_id": 31, "rfq_number": "RFQ-26-0031",
"vehicle_id": 99, "driver_id": 129
}]}
POST /api/provider/v1/dispatches/{id}/accept
配車の承諾。vehicle_id / driver_id を渡すと同時に割当できます。成功で state: "confirmed"。
POST /api/provider/v1/dispatches/{id}/decline
配車の拒否。{"reason": "..."} を推奨(KIZUNA 側に理由が通知され、代替手配が始まります)。成功で state: "cancelled"。
POST /api/provider/v1/dispatches/{id}/start ・ /complete
運行開始・運行完了の報告。confirmed → in_progress → completed の順にのみ遷移します。既に目的の状態にある場合は 200(冪等)、それ以外の順序違いは 409 invalid_state を返します。
4. 精算
GET /api/provider/v1/settlements
自社の精算台帳。?month=YYYY-MM で月次絞り込み。
{"data": {
"entries": [{
"id": 41, "number": "STL-26-0041", "state": "settled",
"service_date": "2026-10-01", "service_month": "2026-10",
"dispatch_number": "DSP-26-0120",
"amount_payable": 78000.0,
"payment_reference": "10月分振込", "settled_date": "2026-11-15"
}],
"total_payable": 78000.0
}}
state: pending(計上済)→ approved(承認済)→ settled(支払済)。disputed は金額協議中です。異議申立ては v1 では API 未対応のため、ポータルまたは担当者へご連絡ください。
5. 自社リソース
GET /api/provider/v1/vehicles → [{id, name, plate_number, vehicle_type, seats}]
GET /api/provider/v1/drivers → [{id, name}]
6. マスターデータ同期(既存 API)
車両・乗務員・運行予定・顧客マスターの一括アップロードは従来からの同期エンドポイントを使います。
GET /api/provider/ping — 疎通確認
POST /api/provider/import — {"import_type": "vehicles|drivers|schedule|customers", "data": [...], "meta": {"content_hash": "..."}}
同一内容の再送は content_hash により自動スキップされます。詳細なペイロード仕様は接続時に個別にご案内します。
7. Webhook(イベントのプッシュ通知)
受信用の https URL を KIZUNA 担当者にお伝えいただくと、イベント発生時に JSON を POST します(設定しない場合はこれまでどおりポーリング運用で問題ありません)。
イベント タイミング
rfq_invited見積依頼に招待されたとき
quote_selected見積が採用されたとき(作成された配車一覧つき)
quote_rejected見積が不採用になったとき
rfq_cancelled招待されていた見積依頼が取り消されたとき
settlement_settled精算が支払済になったとき
POST(ヘッダ)
X-Kizuna-Event: rfq_invited
X-Kizuna-Timestamp: 1751242200
X-Kizuna-Signature: hmac_sha256_hex( secret, "{timestamp}." + body )
POST(ボディ)
{"event": "rfq_invited", "created_at": "...", "data": { ...RFQ要約... }}
署名検証: 交付された秘密鍵で {タイムスタンプ}.{生ボディ} の HMAC-SHA256(16進)を計算し、ヘッダと一致するか確認してください。応答が 2xx 以外の場合は指数バックオフで最大 8 回再送します。受信処理は冪等に実装してください(同一イベントが複数回届く可能性があります)。
8. 運用上の注意
ポーリング推奨間隔 : Webhook(§7)未設定の場合、RFQ/配車の新着確認は 5 分間隔のポーリングを推奨します。
冪等性 : accept / decline / start / complete は同じ結果への再送に対して 200 を返し、状態は壊れません(履歴状態への操作は 409)。見積 POST は送信フィールドのみの更新(PATCH)です。
時刻 : start_time / end_time は 0–24 の小数(時)です(例 8.5 = 8:30)。
障害時 : 5xx は間隔を空けて再試行してください。4xx はリクエスト側の修正が必要です。
サポート : トークン発行・接続テスト・技術相談は KIZUNA 担当者まで。
9. 代理店(販売パートナー)受注 API
旅行代理店さまの自社システムから、団体オーダーの発注・状況確認・搭乗者名簿の登録・精算状況の照会ができます。認証は代理店ごとの Bearer トークン(KIZUNA から交付)で、仕様の流儀は本書前半と共通です(エラー形式・レート制限・他社データは 404)。
エンドポイント 内容
GET /api/agent/v1/me 接続確認・自社情報
POST /api/agent/v1/orders 団体オーダー発注(必須: contact_name・destinations・arrival_date・departure_date・pax_count 1〜500)
GET /api/agent/v1/orders (?state=)//orders/{id} 自社オーダー一覧・詳細(担当ツアー番号・搭乗者数つき)
POST /api/agent/v1/orders/{id}/cancel キャンセル(draft/confirmed のみ。入金後は担当者経由・409)
POST /api/agent/v1/orders/{id}/passengers 搭乗者名簿の一括登録(追記方式・1 回 200 名まで。氏名必須、性別/食事/生年月日/旅券は任意)
GET /api/agent/v1/orders/{id}/passengers 登録済み名簿の取得
GET /api/agent/v1/statements 自社ツアーの請求・入金・残高(JPY)
curl -X POST -H "Authorization: Bearer $AGENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"contact_name": "王偉", "destinations": "東京・大阪 6日",
"arrival_date": "2026-11-10", "departure_date": "2026-11-15",
"pax_count": 25}' \
https://splendor-star.co.jp/api/agent/v1/orders
本 REST API 用于将巴士公司等协力会社的自有系统与 KIZUNA 平台对接。事业者门户中的人工操作(提交报价、接受/拒绝派车、运行报告、结算确认)以及主数据同步,都可以由系统间自动完成。
本文档仅覆盖供应商(供给侧)对接。销售伙伴对接中,代理店下单 API 见 §9;仅 AI 报价、AI 客服对接需在签署保密协议后以「技术条件书」形式逐家单独提供。
0. 接入流程(Onboarding)
步骤 内容
1. 注册 通过事业者门户的新规注册 提交公司信息(已合作的协力会社可跳过)
2. 审核 KIZUNA 确认信息后开通事业者门户
3. 交付令牌 API 令牌由 KIZUNA 负责人通过安全渠道交付(门户界面不显示;可随时吊销、重发)
4. 连通测试 调用下方 GET /api/provider/v1/me 测试连接
5. 对接开发 按照本文档实现。技术问题请联系 KIZUNA 负责人
1. 基本规格
基础 URL:https://splendor-star.co.jp
格式:JSON(UTF-8)/日期 YYYY-MM-DD、日期时间 ISO 8601
认证:Authorization: Bearer <API令牌>(所有端点必需)
限流:每令牌每分钟 120 次请求(超过返回 429)
curl -H "Authorization: Bearer $TOKEN" \
https://splendor-star.co.jp/api/provider/v1/me
{"data": {"id": 8, "name": "○○交通株式会社",
"provider_type": "bus_company", "api_version": "v1"}}
错误格式(通用)
{"error": {"code": "deadline_passed", "message": "Quote deadline has passed"}}
成功响应一律包在 {"data": ...} 中。不存在的 ID 与他社的 ID 均返回 404 not_found(设计上无法看到他社数据)。
2. 询价单(RFQ)
GET /api/provider/v1/rfqs
本公司受邀的询价单列表(按回复期限由近到远、最多 200 条)。加 ?state=open 可只看期限内、未定标的询价。
{"data": [{
"id": 31, "number": "RFQ-26-0031", "state": "sent",
"route_description": "東京・箱根・京都・大阪 ゴールデンルート 24名",
"date_start": "2026-10-01", "date_end": "2026-10-04",
"start_time": 8.0, "end_time": 18.0,
"pickup_location": "成田空港", "dropoff_location": "関西空港",
"vehicle_type": "minibus", "pax_count": 24, "bus_count": 1,
"estimated_km": 360.0, "deadline": "2026-09-05T12:00:00",
"my_quote": null
}]}
GET /api/provider/v1/rfqs/{id}
单条询价。my_quote 为本公司的报价(未提交则为 null)。
POST /api/provider/v1/rfqs/{id}/quote
提交报价。定标前可用同一端点更新(PATCH 语义:只更新传入的字段 ,未传入的字段保持不变)。
字段 类型 必填 说明
total_pricenumber ✔ 总额(JPY)
price_breakdownstring 明细备注(2000 字以内)
includes_tolls / includes_parking / includes_driver_mealsbool 高速费、停车费、司机餐费是否包含(仅接受 JSON 的 true/false)
vehicle_id / driver_idint 本公司车辆/司机 ID(见 §5;他社 ID 返回 422)
vehicle_typestring sedan / van / minibus / large_bus
vehicle_seatsint 座位数
vehicle_name / driver_namestring 不使用 ID 时的自由填写
valid_untildate 报价有效期
notesstring 备注(2000 字以内)
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"total_price": 312000, "vehicle_id": 99, "driver_id": 129,
"includes_tolls": true, "notes": "含高速费、停车费"}' \
https://splendor-star.co.jp/api/provider/v1/rfqs/31/quote
成功:201 + 报价 JSON(state: "submitted")。
错误 状态 含义
rfq_closed409 已定标或已取消
deadline_passed409 已过回复期限
invalid_price400 total_price 不是正数
foreign_vehicle_id / foreign_driver_id422 不属于本公司的资源 ID
quote_locked409 已定标/落标的报价不可再修改
POST /api/provider/v1/rfqs/{id}/withdraw
撤回已提交的报价。
3. 派车(中标后的运行)
报价被采用后,将按运行日逐日生成派车单。
GET /api/provider/v1/dispatches
本公司的派车单列表。筛选:?state=assigned|confirmed|in_progress|completed|cancelled、?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD(最多 500 条)。
{"data": [{
"id": 120, "number": "DSP-26-0120", "state": "assigned",
"provider_response": "pending",
"date": "2026-10-01", "start_time": 8.0, "end_time": 18.0,
"pickup_location": "成田空港", "dropoff_location": "ホテル",
"rfq_id": 31, "rfq_number": "RFQ-26-0031",
"vehicle_id": 99, "driver_id": 129
}]}
POST /api/provider/v1/dispatches/{id}/accept
接受派车。可同时传 vehicle_id / driver_id 完成指派。成功后 state: "confirmed"。
POST /api/provider/v1/dispatches/{id}/decline
拒绝派车。建议附 {"reason": "..."}(KIZUNA 会收到理由通知并启动替代手配)。成功后 state: "cancelled"。
POST /api/provider/v1/dispatches/{id}/start ・ /complete
运行开始、运行完成上报。只能按 confirmed → in_progress → completed 顺序流转。已处于目标状态时返回 200(幂等),其他顺序错误返回 409 invalid_state。
4. 结算
GET /api/provider/v1/settlements
本公司的结算台账。?month=YYYY-MM 按月筛选。
{"data": {
"entries": [{
"id": 41, "number": "STL-26-0041", "state": "settled",
"service_date": "2026-10-01", "service_month": "2026-10",
"dispatch_number": "DSP-26-0120",
"amount_payable": 78000.0,
"payment_reference": "10月分振込", "settled_date": "2026-11-15"
}],
"total_payable": 78000.0
}}
state:pending(已计入)→ approved(已核准)→ settled(已支付)。disputed 表示金额协商中。v1 暂不支持通过 API 提出异议,请经门户或联系负责人。
5. 本公司资源
GET /api/provider/v1/vehicles → [{id, name, plate_number, vehicle_type, seats}]
GET /api/provider/v1/drivers → [{id, name}]
6. 主数据同步(既有 API)
车辆、司机、运行计划、客户主数据的批量上传使用既有的同步端点。
GET /api/provider/ping — 连通确认
POST /api/provider/import — {"import_type": "vehicles|drivers|schedule|customers", "data": [...], "meta": {"content_hash": "..."}}
内容相同的重复上传会被 content_hash 自动跳过。详细的报文规格在对接时单独提供。
7. Webhook(事件推送)
把接收用的 https URL 告知 KIZUNA 负责人后,事件发生时我们会向该地址 POST JSON(不配置则继续按轮询方式使用,完全没有问题)。
事件 触发时机
rfq_invited受邀参加询价时
quote_selected报价被采用时(附生成的派车单列表)
quote_rejected报价落选时
rfq_cancelled受邀的询价被取消时
settlement_settled结算完成支付时
POST(请求头)
X-Kizuna-Event: rfq_invited
X-Kizuna-Timestamp: 1751242200
X-Kizuna-Signature: hmac_sha256_hex( secret, "{timestamp}." + body )
POST(请求体)
{"event": "rfq_invited", "created_at": "...", "data": { ...询价摘要... }}
签名校验:用交付的密钥对 {时间戳}.{原始请求体} 计算 HMAC-SHA256(十六进制),与请求头比对。响应非 2xx 时按指数退避最多重发 8 次。请把接收端实现为幂等(同一事件可能送达多次)。
8. 运维注意事项
轮询建议间隔 :未配置 Webhook(§7)时,建议每 5 分钟轮询一次新询价/新派车。
幂等性 :accept / decline / start / complete 对同一结果的重发返回 200,不会破坏状态(对历史状态的操作返回 409)。报价 POST 为 PATCH 语义,只更新传入字段。
时刻 :start_time / end_time 为 0–24 的小数(小时),如 8.5 = 8:30。
故障时 :5xx 请间隔重试;4xx 需要修正请求内容。
支持 :令牌发放、连通测试、技术咨询请联系 KIZUNA 负责人。
9. 代理店(销售伙伴)下单 API
旅行代理店可以从自己的系统完成团体订单提交、状态跟踪、乘客名单登记、结算状况查询。认证为每家代理店一把 Bearer 令牌(由 KIZUNA 交付),规格约定与本文档前半部分一致(错误格式、限流、他社数据一律 404)。
端点 内容
GET /api/agent/v1/me 连通确认与本社信息
POST /api/agent/v1/orders 提交团体订单(必填:contact_name、destinations、arrival_date、departure_date、pax_count 1〜500)
GET /api/agent/v1/orders (?state=)//orders/{id} 本社订单列表与详情(含对应团号、已登记乘客数)
POST /api/agent/v1/orders/{id}/cancel 取消(仅 draft/confirmed;付款后需经负责人,返回 409)
POST /api/agent/v1/orders/{id}/passengers 乘客名单批量登记(追加方式,每次最多 200 人;姓名必填,性别/饮食/生日/护照可选)
GET /api/agent/v1/orders/{id}/passengers 查询已登记名单
GET /api/agent/v1/statements 本社各团的应收、已收与余额(JPY)
curl -X POST -H "Authorization: Bearer $AGENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"contact_name": "王伟", "destinations": "东京・大阪 6日",
"arrival_date": "2026-11-10", "departure_date": "2026-11-15",
"pax_count": 25}' \
https://splendor-star.co.jp/api/agent/v1/orders
This REST API connects a partner company's own system (bus operators and other suppliers) to the KIZUNA platform. Everything done by hand in the provider portal — submitting quotes, accepting or declining dispatches, reporting service progress, checking settlements — plus master-data sync, can be done machine to machine.
This document covers supplier-side integration only. For sales partners, the agent ordering API is covered in §9; only the AI quoting / AI concierge integrations are provided individually as a Technical Conditions Document after an NDA.
0. Onboarding
Step Details
1. Register Submit your company details via the provider portal registration (existing partners skip this)
2. Review KIZUNA reviews and activates your provider portal
3. Token delivery Your API token is handed over by your KIZUNA contact through a secure channel (never shown in the portal; revocable and reissuable at any time)
4. Connectivity check Call GET /api/provider/v1/me below
5. Build Implement per this document. Technical questions go to your KIZUNA contact
1. Basics
Base URL: https://splendor-star.co.jp
Format: JSON (UTF-8) / dates YYYY-MM-DD, datetimes ISO 8601
Auth: Authorization: Bearer <API token> (required on every endpoint)
Rate limit: 120 requests per minute per token (429 beyond)
curl -H "Authorization: Bearer $TOKEN" \
https://splendor-star.co.jp/api/provider/v1/me
{"data": {"id": 8, "name": "Example Bus Co.",
"provider_type": "bus_company", "api_version": "v1"}}
Error format (all endpoints)
{"error": {"code": "deadline_passed", "message": "Quote deadline has passed"}}
Success responses are always wrapped in {"data": ...}. A missing ID and another supplier's ID both read as 404 not_found — other suppliers' data is invisible by design.
2. Quote requests (RFQ)
GET /api/provider/v1/rfqs
RFQs your company is invited to (nearest deadline first, max 200). Add ?state=open for undecided RFQs still within their deadline.
{"data": [{
"id": 31, "number": "RFQ-26-0031", "state": "sent",
"route_description": "Tokyo–Hakone–Kyoto–Osaka golden route, 24 pax",
"date_start": "2026-10-01", "date_end": "2026-10-04",
"start_time": 8.0, "end_time": 18.0,
"pickup_location": "Narita Airport", "dropoff_location": "Kansai Airport",
"vehicle_type": "minibus", "pax_count": 24, "bus_count": 1,
"estimated_km": 360.0, "deadline": "2026-09-05T12:00:00",
"my_quote": null
}]}
GET /api/provider/v1/rfqs/{id}
A single RFQ. my_quote holds your quote (null if none submitted).
POST /api/provider/v1/rfqs/{id}/quote
Submit a quote. Until the RFQ is decided, the same endpoint updates it (PATCH semantics: only fields present in the request are written ; everything else is kept).
Field Type Required Description
total_pricenumber ✔ Total (JPY)
price_breakdownstring Breakdown memo (up to 2000 chars)
includes_tolls / includes_parking / includes_driver_mealsbool Tolls / parking / driver meals included or not (JSON true/false only)
vehicle_id / driver_idint Your own vehicle/driver IDs (see §5; foreign IDs are a 422)
vehicle_typestring sedan / van / minibus / large_bus
vehicle_seatsint Seat count
vehicle_name / driver_namestring Free text when not using IDs
valid_untildate Quote validity
notesstring Notes (up to 2000 chars)
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"total_price": 312000, "vehicle_id": 99, "driver_id": 129,
"includes_tolls": true, "notes": "tolls and parking included"}' \
https://splendor-star.co.jp/api/provider/v1/rfqs/31/quote
Success: 201 + quote JSON (state: "submitted").
Error Status Meaning
rfq_closed409 Already awarded or cancelled
deadline_passed409 Quote deadline is over
invalid_price400 total_price is not a positive number
foreign_vehicle_id / foreign_driver_id422 Resource ID not in your fleet
quote_locked409 A decided quote can no longer change
POST /api/provider/v1/rfqs/{id}/withdraw
Withdraw a submitted quote.
3. Dispatches (after winning)
When your quote is selected, one dispatch order is created per service day.
GET /api/provider/v1/dispatches
Your dispatch orders. Filters: ?state=assigned|confirmed|in_progress|completed|cancelled, ?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD (max 500).
{"data": [{
"id": 120, "number": "DSP-26-0120", "state": "assigned",
"provider_response": "pending",
"date": "2026-10-01", "start_time": 8.0, "end_time": 18.0,
"pickup_location": "Narita Airport", "dropoff_location": "Hotel",
"rfq_id": 31, "rfq_number": "RFQ-26-0031",
"vehicle_id": 99, "driver_id": 129
}]}
POST /api/provider/v1/dispatches/{id}/accept
Accept a dispatch. Pass vehicle_id / driver_id to assign at the same time. Success → state: "confirmed".
POST /api/provider/v1/dispatches/{id}/decline
Decline a dispatch. {"reason": "..."} is recommended — KIZUNA is notified and starts arranging a replacement. Success → state: "cancelled".
POST /api/provider/v1/dispatches/{id}/start ・ /complete
Report service start / completion. Transitions strictly follow confirmed → in_progress → completed. Re-sending when already in the target state returns 200 (idempotent); any other out-of-order call returns 409 invalid_state.
4. Settlements
GET /api/provider/v1/settlements
Your settlement ledger. Filter by month with ?month=YYYY-MM.
{"data": {
"entries": [{
"id": 41, "number": "STL-26-0041", "state": "settled",
"service_date": "2026-10-01", "service_month": "2026-10",
"dispatch_number": "DSP-26-0120",
"amount_payable": 78000.0,
"payment_reference": "October transfer", "settled_date": "2026-11-15"
}],
"total_payable": 78000.0
}}
state: pending (booked) → approved → settled (paid). disputed means the amount is under discussion. Disputes cannot be raised through the API in v1 — use the portal or your KIZUNA contact.
5. Your resources
GET /api/provider/v1/vehicles → [{id, name, plate_number, vehicle_type, seats}]
GET /api/provider/v1/drivers → [{id, name}]
6. Master-data sync (existing API)
Bulk upload of vehicles, drivers, schedules and customer masters uses the existing sync endpoints.
GET /api/provider/ping — connectivity check
POST /api/provider/import — {"import_type": "vehicles|drivers|schedule|customers", "data": [...], "meta": {"content_hash": "..."}}
Identical re-uploads are skipped automatically via content_hash. Detailed payload specs are provided individually during onboarding.
7. Webhooks (event push)
Give your KIZUNA contact an https receiving URL and events are POSTed to it as JSON (without one, polling keeps working exactly as before).
Event When
rfq_invitedYou are invited to quote on an RFQ
quote_selectedYour quote won (with the created dispatch list)
quote_rejectedYour quote lost
rfq_cancelledAn RFQ you were invited to was cancelled
settlement_settledA settlement entry was paid
POST (headers)
X-Kizuna-Event: rfq_invited
X-Kizuna-Timestamp: 1751242200
X-Kizuna-Signature: hmac_sha256_hex( secret, "{timestamp}." + body )
POST (body)
{"event": "rfq_invited", "created_at": "...", "data": { ...RFQ summary... }}
Verify by computing HMAC-SHA256 (hex) of {timestamp}.{raw body} with your delivered secret and comparing to the header. Non-2xx responses are retried with exponential backoff, up to 8 times — implement your receiver idempotently (the same event may arrive more than once).
8. Operational notes
Polling : without webhooks (§7), poll for new RFQs/dispatches every 5 minutes.
Idempotency : accept / decline / start / complete return 200 on re-sends toward the same outcome and never corrupt state (operations on historical states return 409). Quote POST is a PATCH — only sent fields are written.
Times : start_time / end_time are decimal hours 0–24 (8.5 = 8:30).
Failures : back off and retry on 5xx; fix the request on 4xx.
Support : token issuance, connectivity tests and technical questions go to your KIZUNA contact.
9. Agent (sales partner) ordering API
Travel agents can place group orders, track them, register passenger rosters and check their statements from their own systems. Auth is a per-agency Bearer token (handed over by KIZUNA); the conventions match the first half of this document (error format, rate limit, other agencies' data reads as 404).
Endpoint Purpose
GET /api/agent/v1/me Connectivity check and identity
POST /api/agent/v1/orders Place a group order (required: contact_name, destinations, arrival_date, departure_date, pax_count 1–500)
GET /api/agent/v1/orders (?state=) / /orders/{id} Your orders, with linked tour code and roster count
POST /api/agent/v1/orders/{id}/cancel Cancel (draft/confirmed only; after payment it takes your KIZUNA contact — 409)
POST /api/agent/v1/orders/{id}/passengers Batch roster upload (append-only, up to 200 per request; a name is required, gender/diet/DOB/passport optional)
GET /api/agent/v1/orders/{id}/passengers Read the registered roster
GET /api/agent/v1/statements Billed / paid / balance per your tours (JPY)
curl -X POST -H "Authorization: Bearer $AGENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"contact_name": "Wang Wei", "destinations": "Tokyo-Osaka 6 days",
"arrival_date": "2026-11-10", "departure_date": "2026-11-15",
"pax_count": 25}' \
https://splendor-star.co.jp/api/agent/v1/orders
© 2026 株式会社KIZUNA | 東京都知事登録旅行業 第3-7520号 | 本書の内容は予告なく改訂されることがあります(v1・2026-06-30)