Partnerski API – brzi početak
Tvoja prva integracija se uklapa na jedan zaslon.
Pokušaj sada – nema ključa, nema prijave
Otvori ovu adresu u svom pregledniku. Odmah ćete vidjeti uzorke događaja.
https://timtim.live/api/partner-network/demo?city=Washington- 1
Uzmi probni ključ
Prijavite se, recite nam tko ste, i pritisnite kreirati test tipku. Počinje s tt_test_ i vidi samo uzorke događaja.
- 2
Pronađi događaje
Tražite događaje u gradu.
curl "https://api.timtim.live/v1/events?city=Washington&category=music" \ -H "Authorization: Bearer tt_test_YOUR_KEY" - 3
Prikaži događaj
Svaki događaj ima ime, datum, mjesto, sliku, cijenu i spremnu etiketu za vašu karticu.
- 4
Koristi buy_url
Koristite buy_url koji vam dajemo. To je to. TimTim.Live se bavi pripisivanjem unutar te veze.
- 5
Prikaži rezultate
Vidi ljude koji šalju, prodaju karte i zaradu na ploči ili ih pitaj.
GET https://api.timtim.live/v1/earnings
Referenca
Gdje poslati zahtjeve
https://api.timtim.live/v1Vaš ključ veze
Pošalji ključ u zaglavlje autorizacije. Tipke za testiranje (tt_test_) vidjeti samo uzorke događaja. Ključevi web stranice (tt_pk_live_) mogu sjediti na web stranici i čitati samo događaje. Ključevi poslužitelja (tt_sk_live_) ostaju na vašem poslužitelju te također mogu čitati zarade. Jednom ćemo pokazati ključ — čuvati ga.
curl "https://api.timtim.live/v1/events?city=Washington&category=music" \
-H "Authorization: Bearer tt_test_YOUR_KEY"const res = await fetch("https://api.timtim.live/v1/events?city=Washington&category=music", {
headers: { Authorization: "Bearer tt_test_YOUR_KEY" },
});
const { events, next } = await res.json();
for (const event of events) {
console.log(event.name, event.display.date_label, event.tickets.buy_url);
}// Node 18+ — keep server keys (tt_sk_live_) on the server
const res = await fetch("https://api.timtim.live/v1/events?city=Washington", {
headers: { Authorization: `Bearer ${process.env.TIMTIM_KEY}` },
});
if (!res.ok) {
const problem = await res.json();
throw new Error(`${problem.title} (${problem.request_id})`);
}
const { events } = await res.json();import os, requests
res = requests.get(
"https://api.timtim.live/v1/events",
params={"city": "Washington", "category": "music"},
headers={"Authorization": f"Bearer {os.environ['TIMTIM_KEY']}"},
)
res.raise_for_status()
for event in res.json()["events"]:
print(event["name"], event["tickets"]["buy_url"])<?php
$ch = curl_init("https://api.timtim.live/v1/events?city=Washington&category=music");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . getenv("TIMTIM_KEY")]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true);
foreach ($data["events"] as $event) {
echo $event["name"] . " " . $event["tickets"]["buy_url"] . PHP_EOL;
}Filteri
city- Događaji u ovom gradu.
country- Dvoslovni kod zemlje, na primjer SAD.
category- Na primjer glazba, festival ili konferencija.
from- Događaji na ili nakon ovog datuma (2026-10-20).
to- Događaji na ili prije ovog datuma.
changed_since- Samo se događaji koji su se promijenili nakon ovog vremena.
commissioned- Istina = samo događaji koji plaćaju nagradu.
minimum_earnings- Samo događaji koji plaćaju barem ovoliko po ulaznici.
near- Mjesto, na primjer u blizini=Paris,FR.
limit- Koliko događaja po stranici, od 1 do 100 (20 ako ga izostavite).
Samo mi reci što se promijenilo.
Spremite vrijeme zadnje sinhronizacije i pošaljite ga kao promjenu_od. Dobijete samo događaje koji su se promijenili — uključujući otkazivanje i rasprodane emisije. Nema potrebe za web-kućom. Događaji koje morate prestati prikazivati dolaze na popis povučenih.
GET https://api.timtim.live/v1/events?changed_since=2026-10-06T10:00:00ZViše od jedne stranice
Ako je odgovor sljedeći, pošaljite ga natrag kao kursor= da biste dobili sljedeću stranicu. Kada je sljedeći prazan, imate sve.
GET https://api.timtim.live/v1/events?city=Paris&cursor=eyJtIjoiZCIs…Zarada
Svaki događaj ima zaradu. Ako je zarada lažna, događaj nema nagrade — još uvijek vrijedi pokazati. Ako je to istina, zaraditi.opis kaže ono što ste dobili, na primjer "$5 po prihvatljivoj ulaznici". Ako je kupnja vraćena, nagrada je obrnuta.
Masovna dovoda (sve u jednoj datoteci)
Sačuvajte veliku hranu na ploči. Zatim preuzmite sve događaje koje pokriva u jednoj kompresiranoj datoteci, s ključem vašeg servera: GET /v1/bulk/FEED_ID.ndjson.gz ili .csv.gz. Dodaj ?promijenjen_odes= za samo ono što se promijenilo, uključujući i događaje skinute. Test ključevi mogu probati sada; uživo korištenje treba TimTim.Live pregled.
GET https://api.timtim.live/v1/bulk/bfs_YOURFEED.ndjson.gz?changed_since=2026-10-06T00:00:00ZProdati ulaznice u vlastitoj aplikaciji (prometena trgovina)
Veliki partneri mogu zadržati kupce u vlastitoj aplikaciji. Pitajte GET /v1/events/EVENT_ID/tickets za ono što je na prodaji, zatim POST /v1/narudžbe s izborom kupca. Dobijete TimTim.Live link za plaćanje za otvaranje za kupca; prodaja se kreditira izravno na svoju tvrtku. Test ključevi mogu probati sada. Live use needs a TimTim.Live recenzija i uključena plaćanja kartica.
POST https://api.timtim.live/v1/orders (Idempotency-Key: …) {"event_id": "evt_test_washington_konpa", "ticket_type_id": "tt_test_washington_konpa", "quantity": 2, "buyer_email": "…", "buyer_name": "…"}Ponude vezane uz karte (banke i programi nagrada)
GET /v1/ponude prikazuje svaki događaj koji plaća nagradu kao ponudu. Svaka ponuda ima organizatora, datume koje možete kupiti, cijenu, mjesto i nagradu. Vaš klijent ga aktivira kroz vaš trag link, a nagrada je plaćena vašoj tvrtki kroz /v1/učenje. Test ključevi vidjeti uzorke ponude. Live ponude trebaju TimTim.Live pregled. Poklapanje plaćanja kartica izravno zahtijeva sporazum s kartičnom mrežom ili bankom, i nije povezano.
GET https://api.timtim.live/v1/offers?country=USStanje događaja i ulaznice
status je zakazano, odgođeno, odgoðeno, otkazano, prodano ili završeno. karte.dostupnost je dostupna, ograničena, raspoređena, ne_prodana ili završena. Kada je događaj otkazan, skinite ga.
GET https://api.timtim.live/v1/events/evt_test_washington_konpaKoliko brzo možete pitati
Test ključevi: 60 zahtjeva po minuti. Ključevi uživo: 120 po minuti. Ide brže dobiva 429 odgovor s Ponovno-After, broj sekundi čekati.
Koji događaji dobivate
Događanja koja TimTim.Live organizatori stvaraju i odabiru za dijeljenje. Događaji koje smo uvezli s drugih karata nikada nisu uključeni, jer nemamo pravo ih dijeliti.
Ono što nikad ne šaljemo
Imena kupca, e-mail adrese, kućne adrese, telefonske brojeve i detalje kartice. Partner API dijeli informacije o događajima, ne naši članovi.
Grafički element
Jedna linija HTML prikazuje događaje na bilo kojoj web stranici. Koristite ključ web stranice (tt_pk_live_) i dodajte web stranicu na dopuštenu listu ključeva. Bez ključa prikazuje uzorke događaja.
<script src="https://timtim.live/widget/events.js"
data-key="tt_pk_live_YOUR_WEBSITE_KEY"
data-city="Washington" data-category="music" async></script>Postavke: podaci-grad, zemlja-podaci, kategorija podataka, limit podataka (1–24), podaci-ukupni="istina", podaci-lang i boja-podaci.
OAuth 2.0 (velike integracije)
Neobvezno. Napravite OAuth klijenta na ploči. Zamijenite identifikaciju klijenta i tajnu za pristupni žeton koji traje jedan sat. Pošalji taj žeton umjesto ključa. Tajna nikada ne putuje sa svojim API pozivima, i možete tražiti manje nižim opsegovima nego što klijent ima.
# 1. Trade the client ID and secret for a one-hour token
curl -u "$CLIENT_ID:$CLIENT_SECRET" \
-d grant_type=client_credentials -d "scope=events:read events:details" \
https://api.timtim.live/v1/oauth/token
# → {"access_token":"tt_at_…","token_type":"Bearer","expires_in":3600,"scope":"events:read events:details"}
# 2. Use the token exactly like a key
curl -H "Authorization: Bearer $ACCESS_TOKEN" "https://api.timtim.live/v1/events?city=Washington"Da biste završili žeton ranije, POST ga /v1/oauth/revoke s istim ID klijenta i tajnom. Isključivanje klijenta na vašem panelu završava sve njegove žetone odjednom.
Zaključaj ključ od vaših poslužitelja
Neobvezno. Na vašoj ploči, pronaći ključ servera, test ključ ili OAuth klijent. Otvorite "Lock na moje poslužitelje" i izlistajte javne adrese vaših poslužitelja. Pozivi — i žeton zahtjevi — od bilo gdje drugdje su odbijeni s ip_ne_dozvoljeno, čak i s pravim ključem.
Klijentske certifikate (mTLS) za velike tvrtke: dajte nam osobnu karticu vašeg servera (potvrda) i prikačite je na ključ. Zatim nazovite https://api.tim.live s njim. Odgovaramo samo na poslužitelj koji drži taj certifikat.
# Your certificate's SHA-256 — paste this (or the PEM) under "Lock to my servers"
openssl x509 -in client.crt -noout -fingerprint -sha256
# Every call then presents the certificate
curl --cert client.crt --key client.key \
-H "Authorization: Bearer $KEY" "https://api.timtim.live/v1/events?city=Washington"Priključak za WordPress
Koristi WordPress? Instalirajte TimTim.Live Događanja: blok i kratki kod koji prikazuje događaje s vlastitim TimTim.Live karte linkova. On je napravljen od TimTim.Live, razgovora samo s timtim.live, i ažuriranja samo iz timtim.liva.
Pošaljite datoteku u dodatke → Dodajte novi → Upisni dodatak. Nalijepite svoju web tipku u Postavke → TimTim.Live Događaji i pritisnite Test Veza. Zatim dodajte TimTim.Live Događanja blok na bilo koju stranicu.
Preuzmi priključak za WordPress[timtim_events city="Washington" category="music" limit="6"]Dovodi
Isti događaji kao JSON Feed, RSS, XML, CSV ili kalendarska datoteka (.ics). Google Kalendar, Apple Kalendar i Outlook se mogu pretplatiti na kalendar. Čitatelji dovoda ne mogu poslati zaglavlja, pa stavite ključ web stranice ili test ključ u ?key=. Nikad ne stavljaj ključ poslužitelja u link.
https://timtim.live/v1/feeds/events.json?key=tt_pk_live_YOUR_KEY&city=Paris
https://timtim.live/v1/feeds/events.rss?key=tt_pk_live_YOUR_KEY&city=Paris
https://timtim.live/v1/feeds/events.xml?key=tt_pk_live_YOUR_KEY&city=Paris
https://timtim.live/v1/feeds/events.csv?key=tt_pk_live_YOUR_KEY&city=Paris
https://timtim.live/v1/feeds/events.ics?key=tt_pk_live_YOUR_KEY&city=ParisWeb-hooks
Dodajte adresu na ploču i šaljemo joj poruku kada se nešto promijeni: event.promijenjen ili zarade.promijenjeno. Web-hooks su opcionalni — promijenjeni_otkad vam daje iste informacije.
{
"id": "whd_8Fk2mQxR7tLp",
"type": "event.changed",
"created_at": "2026-10-06T15:04:05.000Z",
"mode": "live",
"data": {
"event": {
"id": "ev_…",
"name": "…",
"status": "cancelled",
"tickets": {
"availability": "ended",
"buy_url": "https://timtim.live/b/…"
},
"…": "the same event object as GET /v1/events"
}
}
}Provjeri svaku poruku: potpisana je sa tvojom tajnom. Odbiti bilo što starije od pet minuta, i ignorirati TimTim-Delivery-Id ste već rukovali.
// Node — Express with the RAW body (do not JSON.parse before checking)
import crypto from "node:crypto";
app.post("/timtim", express.raw({ type: "application/json" }), (req, res) => {
const header = req.get("TimTim-Signature") ?? ""; // t=1700000000,v1=<hex>
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const body = req.body.toString("utf8");
const expected = crypto.createHmac("sha256", process.env.TIMTIM_WEBHOOK_SECRET)
.update(`${parts.t}.${body}`).digest("hex");
const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) <= 300;
const same = expected.length === (parts.v1 ?? "").length &&
crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
if (!fresh || !same) return res.sendStatus(400);
const message = JSON.parse(body); // { id, type, mode, data }
if (alreadyHandled(req.get("TimTim-Delivery-Id"))) return res.sendStatus(200);
// message.type === "event.changed" → message.data.event
// message.type === "earnings.changed" → message.data.earning
res.sendStatus(200);
});Odgovorite sa bilo 2xx u roku od 10 sekundi. Ako ne, pokušat ćemo ponovno nakon 1 minuta, 5 minuta, 30 minuta, onda 2, 6, 12 i 24 sata, onda zaustaviti. Nikad ne pratimo preusmjeravanje.
Pješčanik
Test ključevi dobiti uzorak događaja označena TEST event — NE PRAVI PENY. Otvorite buy_url, pritisnite Kupite Test ulaznicu, zatim tražite zaradu. Simulirajte povrat novca i gledajte kako se okreće.
Kada nešto krene po zlu
Pogreške objašnjavaju se običnim riječima, s naslovom i što sljedeće učiniti. Svaki odgovor nosi TimTim-Id. Pošalji nam ga i možemo naći vaš zahtjev.
- 401
missing_keyPlease add your TimTim.Live key. Send it as: Authorization: Bearer tt_test_… — get a test key at /partners/dashboard. - 401
invalid_keyWe do not recognise that key. Check you copied the whole key, or make a new one at /partners/dashboard. - 401
revoked_keyThat key was switched off. Make a new key at /partners/dashboard. - 403
partner_inactiveThis partner account cannot use live keys right now. Your test key still works. Contact TimTim.Live partnerships to review the account. - 403
missing_scopeThis key is not allowed to do that. Earnings need a secret key (tt_sk_live_…) or a test key, used from your server. - 403
domain_not_allowedThis website is not allowed to use this key. Add the website to the key's allowed domains at /partners/dashboard. - 400
unknown_parameterWe do not know one of those parameters. See /partners/docs for the list. - 400
invalid_countryWe could not read that country. Use a two-letter code, for example country=US or country=FR. - 400
invalid_dateWe could not read that date. Dates look like 2026-10-20. - 400
invalid_changed_sinceWe could not read changed_since. Use a full time, for example changed_since=2026-10-06T10:00:00Z. - 400
invalid_booleanThat value must be true or false. For example commissioned=true. - 400
invalid_numberThat value must be a number. For example minimum_earnings=5. - 400
invalid_nearWe could not find that place. Try near=Paris,FR or city=Paris&country=FR. - 400
invalid_locationWe could not read that location. Send lat, lng and optionally radius in kilometres. - 400
invalid_limitlimit must be between 1 and 100. Leave it out to get 20. - 400
invalid_cursorThat cursor is not one we gave you. Use the `next` value from the previous page exactly as it came. - 404
event_not_foundWe could not find that event. It may have been removed, or it is not shared with partners. - 403
capability_requiredCard-linked offers are not switched on for your account. Offers are an enterprise feature. Your test key shows sample offers now; ask TimTim.Live partnerships to review your account for live offers. - 403
server_key_requiredThis is for your server only. Use a secret key (tt_sk_live_…) or a test key from your server, never a website key in a web page. - 403
commerce_not_enabledSelling tickets in your own app is not switched on for your account. This is an enterprise feature (EMBEDDED_CHECKOUT). Your test key can try it now; ask TimTim.Live partnerships to review your account. Until then, use each event's buy_url. - 503
checkout_not_openCard payments are not open on TimTim.Live yet. Send the buyer to the event's buy_url instead. Your test key can still rehearse orders. - 409
ticket_not_availableThat ticket cannot be bought right now. It may be sold out, not on sale yet, or no longer on sale. Ask /v1/events/{id}/tickets for what is on sale now. - 400
order_invalidWe could not read that order. See /partners/docs for the fields an order needs. - 409
idempotency_conflictThat Idempotency-Key was already used for a different order. Send exactly the same order to get the same answer back, or use a new Idempotency-Key for a new order. - 400
idempotency_key_requiredPlease send an Idempotency-Key header. 8 to 80 letters, digits, - or _. Send the same key again to retry safely — you will get the same order, never a second one. - 404
order_not_foundWe could not find that order. Only orders your company began with this kind of key (test or live) can be read here. - 403
bulk_not_enabledBulk feeds are not switched on for your account. This is an enterprise feature (BULK_FEEDS). Your test key can try it now; ask TimTim.Live partnerships to review your account. Until then, page through /v1/events or the feeds. - 404
bulk_not_foundWe could not find that bulk feed. Use the address shown on /partners/dashboard: /v1/bulk/<subscription id>.ndjson.gz or .csv.gz. - 429
bulk_too_soonA full file was made for this feed a few minutes ago. Full files can be made every 15 minutes. For what changed since, add changed_since=<time> — that is not limited. - 410
event_withdrawnThis event is no longer shared with partners. Stop showing it and remove its buy_url. Nothing else is needed — your old link still takes people to the event page. - 400
invalid_trackWe could not read that tracking signal. Send {"type":"impression"}, {"type":"event_view","event_id":"…"} or {"type":"event_click","event_id":"…"}. Sales are recorded by TimTim.Live, never sent from a page. - 404
not_foundThere is nothing at this address. The Partner API lives at /v1/events, /v1/events/{id}, /v1/offers and /v1/earnings. - 405
method_not_allowedThis address does not answer that method. The Allow header lists the methods it answers. - 401
key_in_urlSend your key in the Authorization header. Only /v1/feeds reads a key from the URL (?key=). Everywhere else use Authorization: Bearer <key> — keys in URLs end up in logs. - 403
ip_not_allowedThis key only works from your listed servers. Call from an address on the key's allowlist, or change the list at /partners/dashboard. - 401
certificate_requiredThis key needs your client certificate. Connect to https://api.timtim.live with the TLS client certificate pinned to this key. - 401
certificate_mismatchThat is not the certificate pinned to this key. Use the certificate whose SHA-256 is on your dashboard, or pin the new one there. - 429
rate_limitedToo many requests — please slow down. Wait the number of seconds in Retry-After, then try again. - 500
server_errorSomething went wrong on our side. Please try again. If it keeps happening, send us your TimTim Request ID.
Kako se otvaraju živi tipke
Vaš test ključ radi odmah. Za ključeve uživo, osoba na TimTim.Live gleda vaše ime tvrtke, vaše web stranice i kako ćete pokazati događaje. Vidiš odgovor na pločici.
TimTim.Live API ažuriranja
Verzija 1 raste samo. Mi dodajemo nove stvari. Ne uklanjamo ili ne preimenujemo ono što je već tamo.
- — Odgovori na događaj sada nose ETag. Pošaljite ga natrag kao Ako-None-Match dobiti brzo 304 kada se ništa nije promijenilo. Neobvezno.
- — Ključevi web stranice sada računaju svaki posjetitelj na svoju ruku, tako zauzete stranice nastavljaju raditi. Nije potrebna akcija.
- — Klijentske potvrde (mTLS) otvorene su: prikačite svoj certifikat na ključ na ploči. Neobvezno. Nije potrebna akcija.
- — Bulk feeds: svaki događaj možete pokazati, u jednom datoteci, na Get /v1/bunk. Neobvezno. Nije potrebna akcija.
- — API ima svoju adresu: https://api.tim.live/v1. Nije potrebna akcija.
- — Vaša vlastita stranica naplata na Timtim.live/cackout. Neobvezno. Nije potrebna akcija.
- — Prodajte karte u vlastitoj aplikaciji: GET /v1/events/EVENT_ID/tickets i POST /v1/redbe. Neobvezno. Nije potrebna akcija.
- — Stranica statusa javnosti na /partners/status, provjerava svake minute. Nije potrebna akcija.
- — Mjesečne izjave za tvrtke: GET /v1/naseljanja. Nije potrebna akcija.
- — Postbacks: dodati ?sub_id= na link kupovine i mi ga poslati natrag s prodajom. Neobvezno. Nije potrebna akcija.
- — Card-ponude za banke i nagrade programa: GET /v1/ponude. Neobvezno. Nije potrebna akcija.
- — Kalendar feed: /v1/feeds/events.ics za Google kalendar, Apple Kalendar i Outlook. Nije potrebna akcija.
- — Zaključaj ključ na svojim poslužiteljima: IP dopušta liste sada, certifikate klijenta (mTLS) na api.tim.live. Neobvezno. Nije potrebna akcija.
- — OAuth 2.0 uvjerenja za velike integracije: POST /v1/oauth/token i /v1/auth / revoke. Ključevi nastavljaju raditi. Nije potrebna akcija.
- — WordPress dodatak 1.0.0: blok, kratki kod i postavke stranice. Ažurira se iz Timtim.live. Nije potrebna akcija.
- — Website widget, JSON/RSS/XML/CSV feeds i webhooks (event. promijenjen, zarade. promijenjen). Nije potrebna akcija.
- — Partner API v1: događaji, jedan događaj, zarade, i pješčanik. Nije potrebna akcija.