# Get Fulfillment
> Source: /api-reference/members/wallet/get-fulfillment
> Get details of a specific fulfillment
> Endpoint: GET /members/me/wallet/fulfillments/{fulfillmentId}

## Overview [#overview]

Returns detailed information about a specific fulfillment including verification codes, redemption instructions, and current status.

Use this endpoint to display full fulfillment details in the member app.

## Authentication [#authentication]

Requires a valid Clerk JWT token in the Authorization header.

## Path Parameters [#path-parameters]

<ParamField path="fulfillmentId" type="string" required>
  UUID of the fulfillment to retrieve
</ParamField>

<RequestExample>

```bash cURL
curl -X GET "http://localhost:3000/v1/members/me/wallet/fulfillments/fulfill_550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_CLERK_JWT"
```

```typescript TypeScript
const fulfillmentId = "fulfill_550e8400-e29b-41d4-a716-446655440000";
const response = await fetch(`http://localhost:3000/v1/members/me/wallet/fulfillments/${fulfillmentId}`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_CLERK_JWT'
  }
});

const fulfillment = await response.json();
```

</RequestExample>

## Response [#response]

Returns a single fulfillment object with the same structure as items in the [Get Fulfillments](/api-reference/members/wallet/get-fulfillments) response.

<ResponseExample>

```json 200 Response - Suite Upgrade
{
  "id": "fulfill_550e8400-e29b-41d4-a716-446655440000",
  "sourceType": "offer",
  "name": "Suite Upgrade",
  "shortDescription": "Complimentary upgrade to next available suite",
  "catalogType": "offer",
  "redemptionType": "property_specific",
  "propertyName": "Luxury Resort & Spa",
  "reservationId": "ABC123",
  "status": "approved",
  "approvalStatus": "approved",
  "pointsCharged": 1500,
  "claimedAt": "2024-04-10T09:15:00Z",
  "fulfilledAt": null,
  "expiresAt": "2024-04-20T23:59:59Z",
  "responseDeadline": "2024-04-15T12:00:00Z",
  "verificationCode": "SUITE-2024-789",
  "activationCode": null,
  "qrCodeUrl": "https://cdn.journey.com/qr/fulfill_550e8400.png",
  "media": {
    "heroImageUrl": "https://cdn.journey.com/offers/suite-upgrade-hero.jpg",
    "cardImageUrl": "https://cdn.journey.com/offers/suite-upgrade-card.jpg"
  },
  "howToRedeem": "Present verification code at check-in or call the property directly at +1-555-LUXURY.",
  "metadata": {
    "currentRoomType": "Standard King",
    "requestedRoomType": "Junior Suite", 
    "confirmedRoomType": "Executive Suite",
    "specialRequests": "High floor, city view if available"
  }
}
```

```json 200 Response - Timeless Stay
{
  "id": "fulfill_550e8400-e29b-41d4-a716-446655440001",
  "sourceType": "offer",
  "name": "Timeless Stay",
  "shortDescription": "Flexible check-in and check-out times",
  "catalogType": "offer",
  "redemptionType": "property_specific",
  "propertyName": "Downtown Hotel",
  "reservationId": "XYZ789",
  "status": "modified",
  "approvalStatus": "modified",
  "pointsCharged": 800,
  "claimedAt": "2024-04-08T16:20:00Z",
  "fulfilledAt": null,
  "expiresAt": "2024-04-25T23:59:59Z",
  "responseDeadline": "2024-04-12T18:00:00Z",
  "verificationCode": "TIMELESS-456",
  "activationCode": null,
  "qrCodeUrl": null,
  "media": {
    "heroImageUrl": "https://cdn.journey.com/offers/timeless-stay-hero.jpg",
    "cardImageUrl": "https://cdn.journey.com/offers/timeless-stay-card.jpg"
  },
  "howToRedeem": "Contact property 24 hours before arrival to confirm times.",
  "metadata": {
    "requestedCheckinTime": "10:00",
    "requestedCheckoutTime": "18:00",
    "modifiedCheckinTime": "11:00", 
    "modifiedCheckoutTime": "17:00",
    "propertyNotes": "Early check-in available from 11am. Late checkout until 5pm confirmed."
  }
}
```

```json 404 Response - Not Found
{
  "statusCode": 404,
  "message": "Fulfillment not found"
}
```

</ResponseExample>

## Status Details [#status-details]

### claimed [#claimed]
- **Meaning**: Recently claimed, being processed
- **Actions**: Show as "Processing"
- **Codes**: Not yet available

### pending_approval [#pending_approval]
- **Meaning**: Waiting for property approval
- **Actions**: Show "Pending Approval" with deadline
- **Codes**: Not yet available

### approved [#approved]  
- **Meaning**: Approved and ready to use
- **Actions**: Show verification code and redemption instructions
- **Codes**: Available for use

### modified [#modified]
- **Meaning**: Property modified the request
- **Actions**: Show modified terms, may need member confirmation
- **Codes**: Available with updated details

### fulfilled [#fulfilled]
- **Meaning**: Successfully redeemed/used
- **Actions**: Show as completed
- **Codes**: May be hidden or marked as used

### rejected [#rejected]
- **Meaning**: Property declined the request
- **Actions**: Show rejection reason, offer alternatives
- **Codes**: Not available

### cancelled [#cancelled]
- **Meaning**: Cancelled by member or admin
- **Actions**: Show as cancelled
- **Codes**: Not available

### expired [#expired]
- **Meaning**: Item expired before use
- **Actions**: Show as expired
- **Codes**: Not available

## Verification Codes [#verification-codes]

For active fulfillments (not cancelled/expired):

### verificationCode [#verificationcode]
- **Purpose**: Primary code for property verification
- **Format**: Usually alphanumeric (e.g., "SUITE-2024-789")
- **Usage**: Present to front desk/concierge

### activationCode [#activationcode]  
- **Purpose**: Secondary activation if needed
- **Format**: Numeric or alphanumeric
- **Usage**: For digital/mobile redemptions

### qrCodeUrl [#qrcodeurl]
- **Purpose**: QR code for mobile scanning
- **Format**: URL to PNG/SVG image
- **Usage**: Scan at property kiosks or mobile apps

## Metadata Examples [#metadata-examples]

Different fulfillment types include specific metadata:

### Suite Elevation [#suite-elevation]
```json
{
  "currentRoomType": "Standard King",
  "requestedRoomType": "Junior Suite",
  "confirmedRoomType": "Executive Suite"
}
```

### Timeless Stay [#timeless-stay]
```json
{
  "requestedCheckinTime": "10:00",
  "requestedCheckoutTime": "18:00", 
  "modifiedCheckinTime": "11:00",
  "modifiedCheckoutTime": "17:00"
}
```

## Related Endpoints [#related-endpoints]

- [Get Fulfillments](/api-reference/members/wallet/get-fulfillments) - List all fulfillments
- [Cancel Fulfillment](/api-reference/members/wallet/cancel-fulfillment) - Cancel this fulfillment
