名刺交換 / ミートログ

名刺交換を申し込む

PUT/card-exchanges/:exchangeId/request

スキャンした相手に名刺交換を申し込みます(SCANNED → PENDING)。相手の公式アプリにプッシュ通知を送り、相手が承認するまで 3 分待ちます。相手が交換中だった別の交換は消えます。

認証要ログイン

パスパラメータ

exchangeIdstring必須

交換 ID。

リクエストボディ

shareEmailboolean必須

自分のメールアドレスを相手に開示するか。この相手への開示設定として保存され、後から PATCH /meet-logs/contacts/:userId(相手がコミュニティなら PATCH /meet-logs/communities/:communityId)で変えられます。自分がコミュニティとして交換するとき(myCommunity が null でないとき)は、何を送っても false として扱います。

subscribeNewsletterboolean任意

相手のコミュニティのメルマガを受け取るか。相手がコミュニティとして交換しているときは必須で、それ以外では使いません。true の間は、shareEmail が false でもメールアドレスをそのコミュニティに開示します。

locationCardExchangeLocation | null任意

端末で取得した現在地。取得できなければ省略します。自分の記録にだけ残り、相手には見えません(コミュニティとして交換したときは、コミュニティの記録に残り、管理者全員に見えます)。

補足

同じ相手への申し込みは 1 時間に 5 回までです(超えると 429、errorCode 40206)。

期限切れは 409(errorCode 40204)、状態が合わなければ 409(errorCode 40205、status に現在の状態)を返します。

相手がコミュニティとして交換しているとき(counterpartCommunity が null でないとき)は subscribeNewsletter が必須です。無ければ 400(errorCode 40217)を返します。相手を個人だと思ったまま成立させて、コミュニティにメールアドレスが渡るのを防ぐためです。

交換の途中(スキャン・申し込みのあと)で管理者でなくなった・コミュニティが削除された交換は進められません。自分がコミュニティ側なら交換を消して 403(errorCode 40208)、相手がコミュニティ側なら交換を消して 409(errorCode 40207)を返します。

レスポンス

CardExchange を返します。

リクエスト
curl https://api.4s.link/card-exchanges/EXCHANGE_ID/request \
-X PUT \
-H "Authorization: Bearer 4s_at_..." \
-H "Content-Type: application/json" \
-d '{
"shareEmail": true,
"location": { "latitude": 35.6581, "longitude": 139.7017, "accuracy": 12 }
}'
レスポンス例
{
"id": "6f1c2d3e-...",
"status": "PENDING",
"role": "REQUESTER",
"counterpart": {
"id": "u-taro",
"slug": "taro",
"firstName": "Taro",
"lastName": "Yamada",
"nativeName": "山田 太郎",
"avatarUrl": "https://...",
"title": "代表取締役",
"bio": "企業の新規事業を支えるサービスを開発しています。",
"cardDesign": "gradient-01-cobalt-mint",
"cardPhoto": null,
"organization": {
"id": "org-1",
"name": "株式会社HORIZON",
"slug": "horizon",
"logoUrl": null,
"title": "ビジネス開発チーム"
}
},
"counterpartCommunity": null,
"myCommunity": null,
"expiresAt": "2026-07-10T06:33:00.000Z",
"createdAt": "2026-07-10T06:29:40.000Z",
"requestedAt": "2026-07-10T06:30:00.000Z",
"respondedAt": null,
"myShareEmail": true,
"mySubscribeNewsletter": null,
"result": null
}