Skip to main content

Developers

Developers

API, webhooks and AI connector. Free on every account.

Everything here works on a free SmartScale Events organizer account. There's no plan to upgrade to. The API, the webhooks and the AI connector all run on the same tools, with the same rules: you only ever see your own events, and nothing goes public or gets texted without your approval.

1. Get an API key

Sign in, go to Dashboard → Connected AI → API keys, pick what the key can see or do, and copy it. Keys start with sse_live_. Send it as a bearer token:

curl https://smartscaleevents.com/api/v1/events \ -H "Authorization: Bearer sse_live_..."

Limit: 120 requests per minute per IP. Every call shows up in your dashboard activity log.

2. REST endpoints

Every response looks like {"ok": true, "data": {...}} or {"ok": false, "error": "...", "kind": "not_found"}. Anywhere an endpoint takes {event}, you can use the event's id, slug or link.

EndpointWhat it returns
GET /api/v1/meShows which SmartScale Events organizer account is connected, how many events it has, and whether payouts are set up. Call this first if you are unsure whether the organizer is signed in. (no key needed)
GET /api/v1/eventsLists the organizer's own events with tickets sold, capacity, gross sales and page visitors in the last 7 days. Use 'when' to pick upcoming (default), past or all.
GET /api/v1/events/{event}Full details for one of the organizer's events: date, venue, visibility, ticket types with price, capacity, sold and left, fee setting and the public link. 'event' can be the id, the event link or its slug.
GET /api/v1/events/{event}/salesSales for one event: tickets sold, orders, gross and net, fees, buyers, sales by ticket type, the last 3 days vs the 3 before, where buyers came from (Instagram, Facebook, promoters...), promo codes used, refunds and tickets left.
GET /api/v1/events/{event}/guestsTicket holders (and free guest-list names) for one event, with ticket type, quantity and whether they checked in. Names are shown as first name + last initial and contact details are hidden unless the organizer granted contact access and include_contact is true.
GET /api/v1/events/{event}/checkinsHow many people are in the door right now for one event: tickets checked in vs sold, guest-list check-ins, by ticket type and by hour.
GET /api/v1/events/{event}/promotersWho sold what for one event: each promoter or co-host link with clicks, tickets sold, ticket revenue, commission rate, commission earned, already paid and still owed.
GET /api/v1/events/{event}/insightsThe most useful next moves for one event, ranked, based on its sales, traffic and timing (for example: sales slowed, text past buyers; one channel is working, lean into it). Each step has a link to do it.
GET /api/v1/events/{event}/feedbackWhat guests said after an event: average rating out of 5, how many answered, the 1-5 breakdown, comments guests allowed you to quote publicly (testimonials), and private comments about what to improve. Guests are asked automatically about an hour after the event ends.
GET /api/v1/payoutsWhether the organizer's payout account is set up, money available and on the way, recent payouts to their bank, and total ticket sales. Read-only: it can't change payouts or bank details.
GET /api/v1/followersHow many people follow the organizer: total, new in the last 7 and 30 days, how many get a text when a new event is posted, and where they followed from (organizer page, after checkout). Followers get the organizer's upcoming events in a Thursday email.
GET /api/v1/searchSearch public upcoming events on SmartScale Events by words, city, date range and free/paid, with ticket links. Can also include free community events (concerts, markets, family events) in supported cities. (no key needed)
GET /api/v1/toolsEvery tool your key can use, with its input schema.
POST /api/v1/tools/{name}Run any tool with a JSON body, e.g. sse_create_event_draft, sse_create_promoter_link. Publishing and texting return a review_url; the organizer must sign in and approve on that page. sse_confirm only retrieves the review link.
curl -X POST https://smartscaleevents.com/api/v1/tools/sse_create_event_draft \ -H "Authorization: Bearer sse_live_..." -H "Content-Type: application/json" \ -d '{"description":"Fall Day Party, Sat Oct 24, 2-8pm at The Yard, Houston. GA $20, VIP table for 6 $250."}'

3. Webhooks

Add a URL at Dashboard → Connected AI → Webhooks, or with POST /api/v1/webhooks {"url": "...", "events": ["order.paid"]}. Managing webhooks through the API needs a key with the Guest contact details permission, because order webhooks include the buyer's name and email.

order.paidA ticket order is paid
order.refundedAn order is refunded
ticket.checked_inA guest is checked in at the door
event.publishedAn event goes live
event.updatedAn event is edited
pingSent when you press "Send test"

Example body:

{ "id": "msg_2f6c...", "type": "order.paid", "created_at": "2026-10-24T19:04:11-05:00", "data": { "event": {"id": 812, "title": "Fall Day Party", "url": "https://smartscaleevents.com/events/fall-day-party", "starts": "2026-10-24 14:00:00", ...}, "order_number": "1729...", "items": [{"ticket": "General Admission", "quantity": 2, "amount": 40}], "tickets": 2, "amount": 40, "buyer_paid": 45.9, "currency": "usd", "customer": {"name": "Jordan Smith", "email": "jordan@example.com"}, "ordered_at": "2026-10-24T19:03:58-05:00" } }

How delivery works

  • Webhooks go out within about a minute of the change. Answer with any 2xx code within 5 seconds.
  • If we don't get a 2xx, we retry after 1 minute, 5 minutes, 30 minutes, 2 hours and 12 hours. After 15 failed deliveries in a row, the webhook is paused until you turn it back on.
  • Treat webhook-id as the unique message id. A message can arrive more than once (for example, if you press Resend), so ignore ids you've already handled.

Verify the signature

We sign every webhook using the Standard Webhooks format, so any of its libraries can check it. The headers are webhook-id, webhook-timestamp and webhook-signature. The signature is v1, followed by the base64 HMAC-SHA256 of id.timestamp.body, keyed with the base64-decoded part of your whsec_ secret.

// Node.js import crypto from "node:crypto"; function verify(secret, headers, rawBody) { const key = Buffer.from(secret.replace(/^whsec_/, ""), "base64"); const signed = `${headers["webhook-id"]}.${headers["webhook-timestamp"]}.${rawBody}`; const expected = crypto.createHmac("sha256", key).update(signed).digest("base64"); const fresh = Math.abs(Date.now() / 1000 - Number(headers["webhook-timestamp"])) < 300; return fresh && headers["webhook-signature"].split(" ").some(s => s === `v1,${expected}`); }
# Python import base64, hmac, hashlib, time def verify(secret, headers, raw_body: bytes): key = base64.b64decode(secret.removeprefix("whsec_")) signed = f"{headers['webhook-id']}.{headers['webhook-timestamp']}.".encode() + raw_body expected = "v1," + base64.b64encode(hmac.new(key, signed, hashlib.sha256).digest()).decode() fresh = abs(time.time() - int(headers["webhook-timestamp"])) < 300 return fresh and any(hmac.compare_digest(s, expected) for s in headers["webhook-signature"].split())

4. AI connector (MCP)

Connect ChatGPT, Claude or any other MCP client to https://smartscaleevents.com/mcp. ChatGPT and Claude use OAuth: you sign in with your normal login and choose what the assistant can see. Tools like n8n or your own agents can send an API key as the bearer token instead. Connect steps

Permissions

events.readYour events — See your events, ticket types, links and check-in counts.
sales.readSales and payouts — See ticket sales, where buyers came from, promoter results and payout status.
guests.readGuest list — See who bought tickets, shown as first name and last initial.
guests.piiGuest contact details — Let the AI see guests' full names, emails and phone numbers when you ask for them.
events.writeBuild and publish events — Make event drafts from a flyer or description, write your launch pack, and publish an event after you say yes.
promoters.writePromoter links — Create tracking links for your promoters.
blasts.sendText your guests — Send a text to your ticket holders, waitlist or guest list, only after you approve the exact message.

Questions: info@smartscaleevents.com. Privacy policy