# Get Bonus Status
> Source: /api-reference/members/me/discover/get-bonus-status
> Check if a specific easter egg bonus has already been claimed
> Endpoint: GET /members/me/features/discover/bonuses/{code}/status

## Overview [#overview]

Check if a specific easter egg bonus has already been claimed by the authenticated member. Easter eggs are special promotional bonuses that can be discovered and claimed once per member.

## Authentication [#authentication]

Requires a valid Clerk JWT token in the Authorization header.

## Path Parameters [#path-parameters]

<ParamField path="code" type="string" required>
  The easter egg bonus code to check
</ParamField>

<RequestExample>

```bash cURL
curl -X GET "http://localhost:3000/v1/members/me/features/discover/bonuses/WELCOME2024/status" \
  -H "Authorization: Bearer YOUR_CLERK_JWT"
```

```typescript TypeScript
const getBonusStatus = async (code: string) => {
  const response = await fetch(`http://localhost:3000/v1/members/me/features/discover/bonuses/${code}/status`, {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer YOUR_CLERK_JWT'
    }
  });
  
  return response.json();
};
```

```javascript Bruno
// From: bruno/Members (Surface)/Development/Discover/
GET {{host}}/members/me/features/discover/bonuses/{{bonusCode}}/status
Authorization: Bearer {{clerkJwt}}
```

</RequestExample>

## Response [#response]

Returns the claim status for the specified bonus code.

<ResponseField name="claimed" type="boolean" required>
  Whether the bonus has already been claimed by this member
</ResponseField>

<ResponseExample>

```json 200 Response - Not Claimed
{
  "claimed": false
}
```

```json 200 Response - Already Claimed
{
  "claimed": true
}
```

```json 404 Response - Invalid Code
{
  "statusCode": 404,
  "error": "NOT_FOUND",
  "message": "Easter egg not found: INVALID_CODE"
}
```

</ResponseExample>

## Use Cases [#use-cases]

### Pre-Claim Validation [#pre-claim-validation]
```typescript
const validateBonusEligibility = async (code: string) => {
  const status = await getBonusStatus(code);
  
  if (status.claimed) {
    return {
      eligible: false,
      reason: 'Bonus already claimed'
    };
  }
  
  return {
    eligible: true,
    reason: 'Ready to claim'
  };
};
```

### UI State Management [#ui-state-management]
```typescript
const BonusCard = ({ bonusCode, displayName, pointValue }) => {
  const [status, setStatus] = useState(null);
  const [loading, setLoading] = useState(true);
  
  useEffect(() => {
    const checkStatus = async () => {
      try {
        const result = await getBonusStatus(bonusCode);
        setStatus(result);
      } catch (error) {
        setStatus({ claimed: false, error: true });
      } finally {
        setLoading(false);
      }
    };
    
    checkStatus();
  }, [bonusCode]);
  
  if (loading) return <Spinner />;
  
  return (
    <div className="bonus-card">
      <h3>{displayName}</h3>
      <p>{pointValue.toLocaleString()} points</p>
      
      {status.claimed ? (
        <div className="claimed-badge">✓ Already Claimed</div>
      ) : (
        <button 
          onClick={() => claimBonus(bonusCode)}
          className="claim-button"
        >
          Claim Bonus
        </button>
      )}
    </div>
  );
};
```

## Error Handling [#error-handling]

### Invalid Bonus Code [#invalid-bonus-code]
When the bonus code doesn't exist or is inactive, the endpoint returns a 404 error. The service only checks active easter eggs.

### Network Error Handling [#network-error-handling]
```typescript
const safeGetBonusStatus = async (code: string) => {
  try {
    const status = await getBonusStatus(code);
    return { ...status, error: false };
  } catch (error) {
    if (error.status === 404) {
      return { claimed: false, error: true, message: 'Bonus code not found' };
    }
    
    return { claimed: false, error: true, message: 'Unable to check status' };
  }
};
```

## Related Endpoints [#related-endpoints]

- [Claim Bonus](/api-reference/members/me/discover/claim-bonus) - Claim an easter egg bonus
- [Get Earn More Gallery](/api-reference/members/me/discover/get-earn-more) - Properties with bonus campaigns
- [Get Wallet Activity](/api-reference/members/wallet/get-activity) - View claimed bonus transactions
