INTEGRATION DOCS
Everything you need to connect your podcast, brand, or platform to the Podovo rewards ecosystem — from the Podcaster API to the upcoming white-label Wallet Widget you can drop directly onto your own show page.
Authorization: Bearer pdv_a1b2c3d4e5f6...
API keys are issued by Podovo. Contact us at craig@podovo.ai to request a key for your podcast. Keys are prefixed pdv_ and tied to your registered podcast name.
https://podovo-api.vercel.app
error field.| Status | Meaning |
|---|---|
| 200 | Success |
| 201 | Resource created |
| 400 | Bad request — missing or invalid parameters |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — action not permitted for this API key |
| 404 | Resource not found |
| 405 | Method not allowed |
| 500 | Internal server error |
{ "error": "This listener has not connected your podcast to their wallet" }
| Query Param | Type | Required | Description |
|---|---|---|---|
| limit | number | optional | Max results to return. Default 100, max 500. |
curl https://podovo-api.vercel.app/api/listeners \ -H "Authorization: Bearer pdv_your_api_key"
{ "podcast": "Huberman Lab", "total": 248, "listeners": [ { "id": "recXXXXXXXXXXXXXX", "name": "Alex Johnson", "email": "alex@example.com", "points": 3420, "joined_date": "2026-04-12" } ] }
curl https://podovo-api.vercel.app/api/analytics \ -H "Authorization: Bearer pdv_your_api_key"
{ "podcast": "Huberman Lab", "total_listeners": 248, "total_points_in_ecosystem": 824600, "avg_points_per_listener": 3325, "listeners_by_month": { "2026-03": 42, "2026-04": 87, "2026-05": 119 }, "points_distribution": { "0": 12, "1-500": 38, "501-2000": 94, "2001-6000": 81, "6001+": 23 } }
| Body Field | Type | Required | Description |
|---|---|---|---|
| string | required | The listener's email address registered with Podovo. | |
| points | integer | required | Whole number of points to award. Maximum 10,000 per call. |
| reason | string | optional | Human-readable reason (e.g. "Listener of the month"). |
curl -X POST https://podovo-api.vercel.app/api/points/award \ -H "Authorization: Bearer pdv_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "email": "alex@example.com", "points": 500, "reason": "Listener of the month" }'
{ "email": "alex@example.com", "podcast": "Huberman Lab", "points_awarded": 500, "points_before": 3420, "points_after": 3920, "reason": "Listener of the month" }
curl https://podovo-api.vercel.app/api/rewards \ -H "Authorization: Bearer pdv_your_api_key"
{ "podcast": "Huberman Lab", "total": 2, "rewards": [ { "id": "recXXXXXXXXXXXXXX", "title": "Backstage Meet & Greet", "description": "Join us backstage after a live recording", "points_cost": 10000, "active": true, "max_redemptions": 5, "redemptions": 1 } ] }
max_redemptions to cap limited-availability perks.| Body Field | Type | Required | Description |
|---|---|---|---|
| title | string | required | Short name shown to listeners (e.g. "Backstage Pass"). |
| points_cost | number | required | Points a listener must spend to redeem this reward. |
| description | string | optional | Longer description of what the listener receives. |
| max_redemptions | number | optional | Cap on total redemptions. Omit for unlimited. |
curl -X POST https://podovo-api.vercel.app/api/rewards \ -H "Authorization: Bearer pdv_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "title": "Backstage Meet & Greet", "description": "Join us backstage after a live recording", "points_cost": 10000, "max_redemptions": 5 }'
{ "id": "recXXXXXXXXXXXXXX", "title": "Backstage Meet & Greet", "description": "Join us backstage after a live recording", "points_cost": 10000, "podcast": "Huberman Lab", "max_redemptions": 5 }
| Query Param | Type | Required | Description |
|---|---|---|---|
| limit | number | optional | Max results. Default 50, max 200. |
curl "https://podovo-api.vercel.app/api/transactions?limit=20" \ -H "Authorization: Bearer pdv_your_api_key"
{ "podcast": "Huberman Lab", "total": 20, "transactions": [ { "id": "recXXXXXXXXXXXXXX", "user_email": "alex@example.com", "merchant": "Athletic Greens", "amount_usd": 79.00, "points_earned": 790, "date": "2026-05-28" } ] }
Email craig@podovo.ai with subject line "API Access Request". Include your podcast name, approximate listener count, and how you plan to use the API. We'll issue your key within 24 hours.
Keys are tied to your registered podcast name. Requests made with your key can only return data for your own listeners — no cross-podcast data access is possible.
This is a planned capability, not yet live. Want early access when it ships? See Get Early Access below.
<div id="podovo-wallet" data-podcast="your-podcast-slug" data-theme="light" data-accent="#3b82f6"></div> <script src="https://podovo.ai/widget.js" async></script>
div when the widget loads.| Attribute | Type | Required | Description |
|---|---|---|---|
| data-podcast | string | required | Your podcast's Podovo slug (assigned during onboarding). Every wallet created or connected through this widget instance links to this show automatically. |
| data-theme | enum | optional | "light" or "dark". Defaults to "light". |
| data-accent | string | optional | Hex color used for buttons and highlights, so the widget matches your brand. |
| data-logo | url | optional | URL to your show's logo, displayed in place of the Podovo mark in white-label mode. |
| data-whitelabel | boolean | optional | When "true", hides Podovo branding in favor of your own — available on partner plans. |
| data-compact | boolean | optional | Renders a smaller, single-column layout suited to sidebars or show-notes embeds. |
data-podcast attribute is what ties the widget to your specific show. Every wallet created — or podcast connection made — through that widget instance is recorded against your podcast automatically, the same way the "Connect" buttons on the podcast directory work today.<div id="podovo-wallet" data-podcast="huberman-lab"></div> <script src="https://podovo.ai/widget.js" async></script>
Podcast slugs are issued by Podovo and match the identifiers used in the Podcaster API. Contact us if you're not sure what yours is or need one assigned.
| Capability | Description |
|---|---|
| Accent color | Match buttons, links, and highlights to your brand palette via data-accent. |
| Custom logo | Replace the Podovo mark with your own show or network logo via data-logo. |
| Hidden branding | Remove "Powered by Podovo" messaging entirely on partner plans via data-whitelabel. |
| Compact layout | Fit the widget into a sidebar or show-notes embed via data-compact. |
https://podovo.ai/wallet?podcast=your-podcast-slug
| Query Param | Type | Required | Description |
|---|---|---|---|
| podcast | string | required | Your podcast's Podovo slug. Pre-fills and auto-connects the show once the listener signs up or signs in. |
Deep links are the simplest way to drive wallet sign-ups today — drop one in your show notes, link-in-bio, or email footer.
Email craig@podovo.ai with subject line "Wallet Widget Early Access". Include your podcast name and website, and whether you're interested in white-label branding. We'll follow up as soon as the widget is ready for partner testing.