Accept a card exchange
/card-exchanges/:exchangeId/acceptThe person who was asked accepts and completes the exchange. A meet log is recorded for each of the two people. If exactly one ongoing event has both people registered, it is recorded automatically as where you met. When one side exchanges as a community, that side's log becomes the community's log, shared by all current admins of the community.
| Auth | Login required |
|---|
Path parameters
exchangeIdstringrequiredExchange ID.
Request body
shareEmailbooleanrequiredWhether to share your email address with the other side. Saved as your sharing setting for them; change it later with PATCH /meet-logs/contacts/:userId (or PATCH /meet-logs/communities/:communityId when the other side is a community). When you exchange as a community (myCommunity is not null), it is always treated as false.
subscribeNewsletterbooleanoptionalWhether to receive the newsletter of the other side's community. Required when the other side exchanges as a community, and ignored otherwise. While true, your email address is disclosed to that community even if shareEmail is false.
Current location from the device. Omit it when unavailable. It is kept only in your own record and is never shown to the other side (when you exchange as a community, it is kept in the community's record and visible to all admins).
Notes
Retrying is safe; an already accepted exchange returns its result.
In an exchange between a community and a user, the ongoing events the user is registered for are the candidates, whether or not the admin handling the exchange is registered for them or the community organizes them.
subscribeNewsletter is required when the other side is exchanging as a community (counterpartCommunity is not null); otherwise the call returns 400 (errorCode 40217). This keeps a client that assumes the other side is a person from completing the exchange and handing the email address to a community.
An exchange cannot proceed once the admin lost the role or the community was deleted partway through (after the scan or the request). The exchange is removed and the call returns 403 (errorCode 40208) when you are the community side, or 409 (errorCode 40207) when the other side is.
Response
Returns CardExchange.
curl https://api.4s.link/card-exchanges/EXCHANGE_ID/accept \-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": "ACCEPTED","role": "TARGET","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": "2026-07-10T06:30:12.000Z","myShareEmail": true,"mySubscribeNewsletter": null,"result": {"exchangedAt": "2026-07-10T06:30:12.000Z","meetLogId": "ml-2","eventId": "ev-1","candidateEvents": [{ "id": "ev-1", "slug": "ivs-2026", "title": "IVS 2026", "languages": null, "startTime": "2026-07-08T10:00:00.000Z", "endTime": "2026-07-10T18:00:00.000Z", "timezone": "Asia/Tokyo", "thumbnailUrl": null, "mainImageUrl": null }]}}