Introduction
Quick Start
This guide walks you through generating an API key, making your first authenticated request, and receiving a webhook event. You should be sending and receiving live data in under five minutes.
Before you start
- · A FrontRow creator account
- · Completed identity verification (KYC) via Persona
- · A terminal with
curlavailable, or any HTTP client
Code samples below use Node.js / TypeScript. The same calls work from any language — see the API Reference for the raw HTTP shape.
01
Generate an API key
Sign in to your FrontRow creator account and open Settings → Developer. Click Create API key, give it a recognizable name (for example local-dev), and select the scopes the integration needs.
Copy the key immediately — it’s shown once and stored hashed at rest. If you lose it, revoke it and create a new one.
02
Set your environment
Export the key as an environment variable so you don’t paste it into command history or commit it by accident.
| 1 | export FRONTROW_API_KEY="fr_live_..." |
All requests go to https://frontrow.center/api/v1.
03
Make your first request
Fetch the authenticated creator’s profile to confirm the key works:
| 1 | curl https://frontrow.center/api/v1/me \ |
| 2 | -H "Authorization: Bearer $FRONTROW_API_KEY" |
You should receive a JSON response like:
| 1 | { |
| 2 | "id": "usr_8f3c1a92", |
| 3 | "handle": "yourname", |
| 4 | "displayName": "Your Name", |
| 5 | "subscriberCount": 1284, |
| 6 | "verified": true |
| 7 | } |
04
Send a message
Reply to a fan in an existing conversation. Replace conv_... with a real conversation ID from GET /api/v1/conversations.
| 1 | const res = await fetch( |
| 2 | "https://frontrow.center/api/v1/conversations/conv_abc/messages", |
| 3 | { |
| 4 | method: "POST", |
| 5 | headers: { |
| 6 | Authorization: `Bearer ${process.env.FRONTROW_API_KEY}`, |
| 7 | "Content-Type": "application/json", |
| 8 | }, |
| 9 | body: JSON.stringify({ |
| 10 | text: "Hey! Thanks for the sub — anything you'd like to see?", |
| 11 | }), |
| 12 | } |
| 13 | ); |
| 14 | |
| 15 | const message = await res.json(); |
| 16 | console.log(message.id); |
Messages sent through the API are automatically tagged as AI-generated when the calling key is associated with an agent integration. The fan sees a small “AI” label so transparency stays intact.
05
Receive a webhook
Webhooks let your application react the moment something happens — a new subscriber, a new message, a tip. From Settings → Developer → Webhooks, add an endpoint URL and pick the events you care about.
FrontRow signs every payload with HMAC-SHA256 using your webhook signing secret. Verify it before trusting the body:
| 1 | import crypto from "node:crypto"; |
| 2 | |
| 3 | app.post("/webhooks/frontrow", (req, res) => { |
| 4 | const signature = req.header("X-FrontRow-Signature"); |
| 5 | const expected = crypto |
| 6 | .createHmac("sha256", process.env.FRONTROW_WEBHOOK_SECRET) |
| 7 | .update(req.rawBody) |
| 8 | .digest("hex"); |
| 9 | |
| 10 | if (signature !== expected) { |
| 11 | return res.status(401).send("Invalid signature"); |
| 12 | } |
| 13 | |
| 14 | const { event, data } = JSON.parse(req.rawBody); |
| 15 | |
| 16 | if (event === "message.received") { |
| 17 | // hand off to your agent |
| 18 | } |
| 19 | |
| 20 | res.sendStatus(200); |
| 21 | }); |
Where to go next
Browse the full set of endpoints, request bodies, and webhook events in the API Reference. Every endpoint includes copy-paste examples in curl and JavaScript.