Journey Docs
Members APIReservations

Lookup & Claim Reservation

Claim a reservation by confirmation code and guest details

POST/members/me/reservations/lookup-claim

Overview

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.

confirmationCodebodystring

Reservation confirmation code. Required if reservationId not provided.

reservationIdbodystring

Reservation external ID. Required if confirmationCode not provided.

lastNamebodystringrequired

Guest last name (must match reservation)

checkOutDatebodystring

Check-out date in YYYY-MM-DD format. Required if checkInDate not provided.

checkInDatebodystring

Check-in date in YYYY-MM-DD format. Required if checkOutDate not provided.

Response

claimedbooleanrequired

Whether the claim succeeded

reservationIdstring

External reservation ID (present on success)

pointsAwardednumber

Points credited to the member's wallet

errorCodestring

Present 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

CodeMeaning
NOT_FOUNDNo matching reservation
ALREADY_CLAIMEDAlready claimed by this member
CLAIMED_BY_OTHERClaimed by a different member — use claim/verify to resolve
DATE_MISMATCHDate does not match reservation
NAME_MISMATCHLast 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/verify

Rate limited to 10 requests per 5 minutes per IP.

reservationIdpathstringrequired

Reservation external ID

clerkTokenbodystringrequired

Fresh Clerk JWT confirming the current user's identity

Response

mergedbooleanrequired

Whether the merge completed

mergeHistoryIdnumber

Merge 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

TypeScript
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

On this page