API in an afternoon
Auth is a Bearer key. Send Idempotency-Key on every POST. Which pool a live key hits is the same Demo/Live switch as the app.
Demo vs Live
- The Demo/Live control in the partner app is the account switch. It applies to dashboard awards, CSV import, and pd_live_ API keys together.
- Demo — those paths spend sandbox entries. No vault USDC.
- Live — those paths spend 10¢ from your vault per award.
- pd_test_ keys always award the demo pool, even when the account is on Live.
- Until you go live (payout address + vault USDC), every award is demo, including live-prefixed keys.
Award an entry
walletrequired — Base address is the share identity and where we pay.partner_user_refoptional — your audit tag only; never used as identity.
curl -X POST https://prizedistro.com/api/v1/entries -H "Authorization: Bearer pd_test_…" -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" -d '{"wallet":"0x1111111111111111111111111111111111111111","partner_user_ref":"player-42"}'Wallet-only body is valid: {"wallet":"0x…"}. Same wallet aggregates weight for the week.
| Method | Path | Auth |
|---|---|---|
| POST | /api/v1/entries | Bearer + Idempotency-Key |
| GET | /api/v1/entries | Bearer |
| GET | /api/v1/drawings/:id/allocation | Bearer (own lines) |
| GET | /api/v1/pool | public, live only |
| GET | /api/v1/verify?q= | public |
Hosted widget
<iframe src="https://prizedistro.com/embed/YOUR_SLUG" width="360" height="160"></iframe>
The string is locked. If you cannot promise a share, it says the campaign is paused — not that the user is in.