Journey Docs
Members APIDiscover

Get Bonus Status

Check if a specific easter egg bonus has already been claimed

GET/members/me/features/discover/bonuses/{code}/status

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

Requires a valid Clerk JWT token in the Authorization header.

Path Parameters

codepathstringrequired

The easter egg bonus code to check

Request

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

Response

Returns the claim status for the specified bonus code.

claimedbooleanrequired

Whether the bonus has already been claimed by this member

Response

{
  "claimed": false
}

Use Cases

Pre-Claim Validation

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

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

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

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' };
  }
};

On this page