TimTim.Live Developer Preview
The Sandbox
A safe place to try everything. Sample events, pretend money, real API answers.
NO KEY
Anyone, right now
GET /v1/demo/eventsanswers with sample events and can act out a bad day. Nothing is saved.TEST KEY · tt_test_…
Your own sandbox
Test purchases, refunds, earnings and webhooks are recorded for your key, so you can build the whole flow. Free; no card.
Get a test key →
Bad days, on purpose
Real code meets sold-out shows and wrong keys. Practice here first.
| Scenario | Where | How |
|---|---|---|
| Sold Out | No key needed | simulate=sold_out |
| Canceled | No key needed | simulate=cancelled |
| Rescheduled | No key needed | simulate=rescheduled (also postponed) |
| Invalid Key | No key needed | simulate=invalid_key — or send any wrong key |
| Rate Limited | No key needed | simulate=rate_limited — or go past 60 requests a minute with a test key |
| Refund | Needs a free test key | Buy a test ticket, then press Simulate refund |
| Webhook Retry | Needs a free test key | Point a test webhook at a URL that answers 500, then buy a test ticket |
| Payment Failure | Coming Soon | Not in the sandbox yet |
1. What users see
The real TimTim.Live widget — one script tag.
Press Show Me.
2. What the API sends
The actual request and the actual JSON.
Nothing asked yet.
3. What your website could look like
The same JSON, drawn your way.
Your Website
What's on this week
Press Show Me to fill this page.
Sample events — no real money moves.
Copy it
<script src="https://timtim.live/widget/events.js"
data-city="Miami" data-category="music" async></script>const res = await fetch("https://api.timtim.live/v1/demo/events?city=Miami&category=music&limit=6");
const { events } = await res.json();
for (const event of events) {
console.log(event.name, event.display.date_label, event.tickets.buy_url);
}Buy Test Ticket
A test purchase needs a free test key, so TimTim.Live knows whose test it is. No card, no real money.
- Get a free test key (
tt_test_…). - Ask
/v1/eventswith it. Each event'sbuy_urlopens a sandbox checkout. - Press Buy Test Ticket there.
What the sandbox really does then:
- ✓ Test sale recorded — it shows in
GET /v1/earningsfor your test key. - ✓ Attribution recorded — the sale carries your key and your
sub_id. - ✓ Webhook sent —
earnings.changedto your test webhooks, retried if your server fails. - ✓ Refund — press Simulate refund; the sale turns
reversedand a webhook says so.
Not in the sandbox yet: a failed payment. It is listed on the roadmap, not faked here.
How the sandbox works →curl "https://api.timtim.live/v1/demo/events?city=Paris&simulate=cancelled"Test purchases
- Get a free test key.
- Ask
GET /v1/eventswith it. You get sample events, each with abuy_url. - Open a
buy_url. It is a sandbox checkout. Press Buy Test Ticket. - Ask
GET /v1/earnings. The test sale is there, counted for your key.
Building your own checkout? POST /v1/orders with a test key makes sandbox orders too.
Refund testing
After a test purchase, press Simulate refund on the same page. The sale turns reversed in /v1/earnings, and your test webhooks get earnings.changed.
Test webhooks
Add a webhook URL for your test key on the dashboard. Test purchases and refunds are sent to it, signed exactly like live ones, and retried the same way if your server fails. How to check the signature.
Sandbox rules
- • Every sample event's name starts “TEST EVENT — NO REAL MONEY”.
- • Test keys never see real events, and nothing in the sandbox can move money.
- • Simulations only change sample events. They never touch a real event or a live key.
Are you representing a company?
Learn how TimTim.Live distribution partnerships work.
Partner Program →