# GET /v4/users/{address}/rewards/campaign/{campaignId}

_Merkl API_

One address's rewards for one campaign: amount, claimed, claimable, pending and per-reason breakdowns. Public, behind the leaderboard gates; a campaign they refuse is readable by its owner through `/v4/rewards/campaign/{campaignId}/mine`. `chainId` is needed only when the campaign id exists on several chains.

### Path parameters

- `address` (string) _(required)_: Wallet address to read
- `campaignId` (string) _(required)_: **On-chain campaign ID** (32-byte hex hash, e.g. `0x93cf385c...`). NOT the internal `Campaign.id`. See [ID types](/integrate-merkl/id-types).

### Query parameters

- `chainId` (string | number): Distribution chain of the campaign. Only needed when the same on-chain campaignId exists on several chains — the route says so when it does.

## Example request

```bash
curl -X GET "https://api.merkl.xyz//v4/users/{address}/rewards/campaign/{campaignId}" \
  -H "x-api-key: YOUR_API_KEY"
```