Pull live public referral codes and offers into your app, embed our widget, use read-only APIs, and connect compatible AI clients. Deployment status and review requirements are shown below.
Public API
A single POST endpoint returns live, verified offer and referral-code data as JSON. No API key needed for read access. Offer discovery requires active, verified, unexpired records with separate public-distribution approval. Links and codes require their own permission checks.
POST https://freebin.app/functions/publicApiParams: company_slug (optional filter), category (optional), limit (1–20, default 10); reuse next_cursor with the same filters for pagination.
curl -X POST https://freebin.app/functions/publicApi \
-H "Content-Type: application/json" \
-d '{"action": "search_offers", "company_slug": "numan", "limit": 5}'curl -X POST https://freebin.app/functions/publicApi \
-H "Content-Type: application/json" \
-d '{"action": "companies", "limit": 20}'Returns only active, verified, unexpired referral codes independently approved for public sharing. A separate approved Offer is not required. Missing eligibility or reward information remains unknown. Optional company_slug filter.
curl -X POST https://freebin.app/functions/publicApi \
-H "Content-Type: application/json" \
-d '{"action": "referral_codes", "company_slug": "uber-eats"}'Embeddable Widget
Drop two lines into any site to show Freebin-verified offers for a company. The widget is self-contained, responsive, and styled to match Freebin. Set data-company to a company slug to filter, or omit it for a general feed.
<div data-freebin-widget data-company="revolut" data-limit="4"></div>
<script src="https://freebin.app/freebin-widget.js" defer></script>Attributes: data-company (slug), data-limit (1–10, default 4), data-api-url (override endpoint).
Partner Webhooks
Register a webhook URL for your company and we'll POST to it when events happen: a report is filed on one of your offers, an offer expires, or a clicks milestone is hit. Each delivery is signed with an HMAC-SHA256 signature so you can verify authenticity.
{
"event": "report_created",
"company_slug": "revolut",
"data": {
"report_id": "rpt_abc123",
"offer_id": "off_xyz789",
"offer_title": "Get €50 signup bonus",
"reason": "expired",
"status": "open"
},
"sent_at": "2026-10-12T03:22:00.000Z"
}import crypto from "crypto";
const rawBody = req.rawBody; // the exact request body string
const signature = req.headers["x-freebin-signature"];
const expected = crypto
.createHmac("sha256", YOUR_WEBHOOK_SECRET)
.update(rawBody)
.digest("hex");
if (signature !== expected) {
return res.status(401).send("Invalid signature");
}To register a webhook, an admin creates a WebhookConfig record with your company slug, webhook URL, events, and a secret. The dispatch system handles the rest.
MCP Server & AI Clients
https://mcp.freebin.app/functions/mcpGatewayThis is the verified no-sign-in, read-only gateway address. See the connection guide for step-by-step setup.
Questions or want a custom integration? Get in touch
