Lookup & Claim Reservation
Claim a reservation by confirmation code and guest details
/members/me/reservations/lookup-claimOverview
Claim a reservation by confirmation code and guest name, awarding loyalty points to the authenticated member. Accepts either check-in or check-out date — use whichever you have available from the booking source.
Authentication
Requires a valid Clerk JWT token.
Request Body
At least one of confirmationCode or reservationId is required. At least one of checkOutDate or checkInDate is required.
confirmationCodebodystringReservation confirmation code. Required if reservationId not provided.
reservationIdbodystringReservation external ID. Required if confirmationCode not provided.
lastNamebodystringrequiredGuest last name (must match reservation)
checkOutDatebodystringCheck-out date in YYYY-MM-DD format. Required if checkInDate not provided.
checkInDatebodystringCheck-in date in YYYY-MM-DD format. Required if checkOutDate not provided.
Response
claimedbooleanrequiredWhether the claim succeeded
reservationIdstringExternal reservation ID (present on success)
pointsAwardednumberPoints credited to the member's wallet
errorCodestringPresent on failure — see error codes below
Request
curl -X POST "https://api.journey.com/members/me/reservations/lookup-claim" \
-H "Authorization: Bearer YOUR_CLERK_JWT" \
-H "Content-Type: application/json" \
-d '{
"confirmationCode": "JRN123456",
"lastName": "Smith",
"checkInDate": "2024-03-10"
}'Response
{
"claimed": true,
"reservationId": "RES_01J5XYZ",
"pointsAwarded": 2500
}Error Codes
| Code | Meaning |
|---|---|
NOT_FOUND | No matching reservation |
ALREADY_CLAIMED | Already claimed by this member |
CLAIMED_BY_OTHER | Claimed by a different member — use claim/verify to resolve |
DATE_MISMATCH | Date does not match reservation |
NAME_MISMATCH | Last name does not match guest record |
Claim Verify (Account Merge)
When a reservation is claimed by a different member, verify identity to trigger an account merge. The reservation holder's account survives as the merge winner.
POST /members/me/reservations/:reservationId/claim/verifyRate limited to 10 requests per 5 minutes per IP.
reservationIdpathstringrequiredReservation external ID
clerkTokenbodystringrequiredFresh Clerk JWT confirming the current user's identity
Response
mergedbooleanrequiredWhether the merge completed
mergeHistoryIdnumberMerge history record ID (present when merged)
Merge Behavior
- The reservation holder's account is the survivor
- The current member's account merges into the reservation holder's
- The current member's Clerk session is invalidated — they must re-authenticate
Request
const result = await fetch(
'https://api.journey.com/members/me/reservations/RES_01J5XYZ/claim/verify',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${clerkToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ clerkToken: freshClerkJwt })
}
).then(r => r.json());
if (result.merged) {
await clerkSignOut(); // session invalidated — must re-auth
}Bruno
bruno/Members (Surface)/Reservations/Lookup Claim.bru