Prijava

195 Zemalja3.400.716 Mjesta3.022.009+ Stranica umjetnika 13.857.311+ Stranica firmi · Dostupno na 417+ Jezika

Partnerski API – brzi početak

Tvoja prva integracija se uklapa na jedan ekran.

Pokušaj sada - nema ključa, nema prijave

Otvori ovu adresu u svom pregledniku. Odmah ćete vidjeti uzorak događaja.

https://timtim.live/api/partner-network/demo?city=Washington
  1. 1

    Dobavi test ključ

    Upišite se, recite nam ko ste i pritisnite Test tipku. Počinje sa tt_test_ i vidi samo uzorke događaja.

  2. 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. 3

    Prikaži događaje

    Svaki događaj ima ime, datum, mjesto, sliku, cijenu i spremnu etiketu za vašu karticu.

  4. 4

    Koristi _url buy

    Koristite buy_url koji vam dajemo. To je to. TimTim.Live se bavi pripisivanjem unutar te veze.

  5. 5

    Pogledaj rezultate

    Vidi ljude koje šalju, prodaju karte i zaradu na tvom panelu, ili pitaj za njih.

    GET https://api.timtim.live/v1/earnings

TimTim.Live status

Opcije

Gdje slati zahtjeve

https://api.timtim.live/v1

Vezna konekcija

Pošaljite ključ u zaglavlje za autorizaciju. Testni ključevi (tt_test_) vide samo uzorke događaja. Ključevi web stranice (tt_pk_live_) mogu sjediti na web stranici i čitati samo događaje. Ključevi servera (tt_sk_live_) ostaju na vašem serveru i mogu čitati zarade. Jednom pokažemo ključ. Čuvaj ga.

curl
curl "https://api.timtim.live/v1/events?city=Washington&category=music" \
  -H "Authorization: Bearer tt_test_YOUR_KEY"
JavaScript
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
// 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();
Python
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
<?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, muzika, festival ili konferencija.
from
Događaji na ili poslije 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 ovoliko po karti.
near
Mjesto, na primjer u blizini =Paris,FR.
limit
Koliko događaja po stranici, 1 do 100 (20 ako ga izostavite).

Samo mi reci šta se promijenilo.

Upišite vrijeme zadnjeg sinhronizacije i pošaljite ga kao promijenjeno_od. Možete dobiti samo događaje koji su se promijenili - uključujući otkazivanje i rasprodane emisije. Nema potrebe za mrežom. Događaji koje morate prestati prikazivati vraćaju se u povučenu listu.

GET https://api.timtim.live/v1/events?changed_since=2026-10-06T10:00:00Z

Više od jedne stranice

Ako je odgovor sljedeći, pošalji ga nazad kao kursor= da dobavi sljedeću stranicu. Kada je sledeća prazna, imaš 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 – vrijedan je pokazivanja. Ako je istina, zarađuj.opis kaže ono što dobiješ, na primjer "$5 po prihvatljivoj karti". Ako je kupovina vraćena, nagrada je obrnuta.

Masno dovoda (sve u jednoj datoteci)

Sačuvaj veliku hranu na pločici. Zatim preuzmite svaki događaj koji pokriva u jednoj kompresiranoj datoteci, sa vašim ključem servera: GET /v1/bulk/FEED_ID.ndjson.gz ili .csv.gz. Dodaj ?promijenjen_odes= samo za ono što se promijenilo, uključujući i skinute događaje. Test ključevi mogu da probaju sada, za upotrebu uživo je potreban pregled TimTim.Live.

GET https://api.timtim.live/v1/bulk/bfs_YOURFEED.ndjson.gz?changed_since=2026-10-06T00:00:00Z

Prodati karte u vlastitoj aplikaciji (prometna trgovina)

Veliki partneri mogu zadržati kupce u svojoj aplikaciji. Pitaj GET /v1/events/EVENT_ID/keti za ono što je na prodaji, zatim POST /v1/narudžbe sa izborom kupca. Imate TimTim.Live link za plaćanje za otvaranje za kupca; prodaja se kreditira direktno vašoj kompaniji. Test ključevi mogu probati sada. Za upotrebu uživo je potrebna recenzija TimTim.Live i plaćanje kartica uključeno.

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 karticama (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ša mušterija ga aktivira kroz vašu link, i nagrada se plaća vašoj kompaniji kroz /v1/zasluge. Test ključevi vide uzorke ponude. Live ponude trebaju TimTim.Live pregled. Poklapanje isplata kartica direktno zahtijeva sporazum sa kartičnom mrežom ili bankom, i nije povezano.

GET https://api.timtim.live/v1/offers?country=US

Status događaja i karte

status je zakazan, odgođen, odgoðen, otkazan, prodan ili završen. karte.dostupnost je dostupna, ograničena, raspoređena, ne_prodana ili završena. Kada se događaj otkaza, skini ga.

GET https://api.timtim.live/v1/events/evt_test_washington_konpa

Koliko brzo možeš pitati

Probni ključevi: 60 zahtjeva u minuti. Ključevi uživo: 120 po minuti. Bržim dobivam 429 odgovor sa Ponovno-After, broj sekundi za čekanje.

Koje događaje dobijaš

Događaji koje TimTim.Live organizatori kreiraju i odaberu za dijeljenje. Događaji koje smo uvezli sa drugih karata nikad nisu uključeni, jer nemamo pravo da ih delimo.

Šta nikad ne pošaljemo

Imena kupca, e-mail adrese, kućne adrese, brojeve telefona i detalje kartica. Partner API dijeli informacije o događajima, ne naši članovi.

Grafički element za web stranice

Jedna linija HTML-a prikazuje događaje na bilo kojoj stranici. Koristi ključ web stranice (tt_pk_live_) i dodaj svoju 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>

Opcije: grad podataka, zemlja podataka, kategorija podataka, granica podataka (1–24), podaci="true", data-lang i boja podataka.

OAuth 2.0 (velike integracije)

Neobvezno. Napravi OAuth klijenta na ploči. Zamijenite identifikaciju klijenta i tajnu za pristupni znak koji traje jedan sat. Pošalji taj žeton umjesto ključa. Tajna nikad ne putuje sa tvojim pozivima iz API-a, i možeš tražiti manje opsega 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 bi ranije završili sa žetonom, POST na /v1/oauth/revoke sa istim ID klijenta i tajnom. Isključivanje klijenta na vašoj ploči završava sve njegove žetone odjednom.

Zaključaj ključ od vaših servera

Neobvezno. Na vašoj tablici, nađite ključ servera, test ključ ili OAuth klijent. Otvorite "Zaključaj na moje servere" i navedite javne adrese vaših servera. Pozivi — i žetoni — iz bilo kog drugog mjesta su odbijeni sa ip_ni_ne_dopuštenim, čak i sa pravim ključem.

Klijentski certifikati (mTLS) za velike kompanije: dajte nam identifikacijsku karticu vašeg servera (certifikat) i prikačite je na ključ. Onda pozovite https://api.tim.live s njim. Odgovaramo samo na server 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"

WordPress dodatak

Koristite WordPress? Instalirajte TimTim.Live Događaji: blok i kratki kod koji prikazuje događaje sa vlastitim TimTim.Live listicama. Ona je napravljena od TimTim.Live, razgovora samo s timtim.live, i ažuriranja samo iz Timem.live.

Otpremi datoteku u Dodaci → Dodaj novi → Otpremi dodatak. Zalijepi ključ svoje stranice u Postavke → TimTim.Live Events i pritisni Testiraj vezu. Zatim dodaj blok TimTim.Live Events na bilo koju stranicu.

Preuzmi dodatak 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 mogu se pretplatiti na kalendar. Čitatelji dovoda ne mogu poslati zaglavlja, pa stavite ključ web stranice ili test ključ u ?key=. Nikada ne stavljaj ključ servera 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=Paris

Web-hooks

Dodajte adresu na ploču i šaljemo joj poruku kada se nešto promijeni: event.promijenjen ili zarada.promijenjeno. Web-hooks su opcionalni — promijenjen_od kada 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. Odbij bilo šta starije od pet minuta, i ignoriši TimTim-Delivery-Id koji si već sredio.

// 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 kojim 2xx u roku 10 sekundi. Ako ne, pokušat ćemo opet nakon 1 minuta, 5 minuta, 30 minuta, onda 2, 6, 12 i 24 sata, onda prestani. Nikad ne pratimo preusmjeravanje.

Pješčanica

Test ključevi dobiju uzorke događaja označenih TEST DOGAĐAJ — NEMA PRAVOG PENSA. Otvori buy_url, pritisnite Kupi Test Kartu, a zatim tražite zaradu. Simulirajte povrat novca i gledajte kako se okreće.

Kada nešto krene po zlu

Pogreške se objašnjavaju običnim riječima, sa naslovom i šta dalje. Svaki odgovor nosi TimTim-Id. Pošalji nam ga i možemo naći tvoj zahtjev.

  • 401missing_keyPlease add your TimTim.Live key. Send it as: Authorization: Bearer tt_test_… — get a test key at /partners/dashboard.
  • 401invalid_keyWe do not recognise that key. Check you copied the whole key, or make a new one at /partners/dashboard.
  • 401revoked_keyThat key was switched off. Make a new key at /partners/dashboard.
  • 403partner_inactiveThis partner account cannot use live keys right now. Your test key still works. Contact TimTim.Live partnerships to review the account.
  • 403missing_scopeThis key is not allowed to do that. Earnings need a secret key (tt_sk_live_…) or a test key, used from your server.
  • 403domain_not_allowedThis website is not allowed to use this key. Add the website to the key's allowed domains at /partners/dashboard.
  • 400unknown_parameterWe do not know one of those parameters. See /partners/docs for the list.
  • 400invalid_countryWe could not read that country. Use a two-letter code, for example country=US or country=FR.
  • 400invalid_dateWe could not read that date. Dates look like 2026-10-20.
  • 400invalid_changed_sinceWe could not read changed_since. Use a full time, for example changed_since=2026-10-06T10:00:00Z.
  • 400invalid_booleanThat value must be true or false. For example commissioned=true.
  • 400invalid_numberThat value must be a number. For example minimum_earnings=5.
  • 400invalid_nearWe could not find that place. Try near=Paris,FR or city=Paris&country=FR.
  • 400invalid_locationWe could not read that location. Send lat, lng and optionally radius in kilometres.
  • 400invalid_limitlimit must be between 1 and 100. Leave it out to get 20.
  • 400invalid_cursorThat cursor is not one we gave you. Use the `next` value from the previous page exactly as it came.
  • 404event_not_foundWe could not find that event. It may have been removed, or it is not shared with partners.
  • 403capability_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.
  • 403server_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.
  • 403commerce_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.
  • 503checkout_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.
  • 409ticket_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.
  • 400order_invalidWe could not read that order. See /partners/docs for the fields an order needs.
  • 409idempotency_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.
  • 400idempotency_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.
  • 404order_not_foundWe could not find that order. Only orders your company began with this kind of key (test or live) can be read here.
  • 403bulk_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.
  • 404bulk_not_foundWe could not find that bulk feed. Use the address shown on /partners/dashboard: /v1/bulk/<subscription id>.ndjson.gz or .csv.gz.
  • 429bulk_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.
  • 410event_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.
  • 400invalid_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.
  • 404not_foundThere is nothing at this address. The Partner API lives at /v1/events, /v1/events/{id}, /v1/offers and /v1/earnings.
  • 405method_not_allowedThis address does not answer that method. The Allow header lists the methods it answers.
  • 401key_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.
  • 403ip_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.
  • 401certificate_requiredThis key needs your client certificate. Connect to https://api.timtim.live with the TLS client certificate pinned to this key.
  • 401certificate_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.
  • 429rate_limitedToo many requests — please slow down. Wait the number of seconds in Retry-After, then try again.
  • 503unavailableThe Partner API is resting for a moment. Please try again in a minute.
  • 500server_errorSomething went wrong on our side. Please try again. If it keeps happening, send us your TimTim Request ID.

Ugovor

Potpuni opis svakog polja, u formatu OpenAPI-a koji alat može pročitati.

Preuzmite openapi.yaml

Kako se otvaraju žive tipke

Tvoj testni ključ radi odmah. Za ključeve uživo, osoba na TimTim.Live gleda vaše ime tvrtke, vašu web stranicu i kako ćete pokazati događaje. Vidiš odgovor na pločici.

TimTim.Live API ažuriranja

Verzija 1 raste. 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 da dobije brzu 304 kada se ništa ne promijeni. Neobvezno.
  • — Ključevi web stranice sada računaju svakog posjetitelja na svoju ruku, tako da zauzete stranice nastavljaju raditi. Nije potrebna akcija.
  • — Klijentski certifikati su otvoreni: prikačite svoj certifikat na ključ na ploči. Neobvezno. Nije potrebna akcija.
  • — Masovni dovodi: svaki događaj koji možete prikazati, u jednoj datoteci, na Get /v1/bunk. Neobvezno. Nije potrebna akcija.
  • — API ima svoju adresu: https://api.tim.live/v1. https://tim.life/v1 i dalje radi. Nije potrebna akcija.
  • — Vaša stranica za odjavu na Timtim.live/cackout. Neobvezno. Nije potrebna akcija.
  • — Prodajte karte u vlastitoj aplikaciji: GET /v1/events/EVENT_ID/kets i POST /v1/redbe. Neobvezno. Nije potrebna akcija.
  • — Stranica statusa javnosti na /partners/status, odabrana svake minute. Nije potrebna akcija.
  • — Mjesečni izvješća za kompanije: GET /v1/naseljanja. Nije potrebna akcija.
  • — Postbacks: dodajte ?sub_id= na link za kupovinu i šaljemo vam ga sa prodajom. Neobvezno. Nije potrebna akcija.
  • — Ponude vezane sa kartom za banke i programe nagrade: GET / v1/ponude. Neobvezno. Nije potrebna akcija.
  • — Kalendar dovod: //v1/feeds/events.ics za Google kalendar, Apple Kalendar i Outlook. Nije potrebna akcija.
  • — Zaključajte ključ na vašim serverima: IP dopušta liste sada, certifikate klijenta (mTLS) na api.tim.live. Neobvezno. Nije potrebna akcija.
  • — OAuth 2.0 klijentske akreditive za velike integracije: POST /v1/oauth/token i /v1/auth / revoke. Ključevi nastavljaju da rade. Nije potrebna akcija.
  • — WordPress dodatak 1.0.0: blok, kratki kod i postavke stranice. Ažurira se iz Timtim.live. Nije potrebna akcija.
  • — Grafički element za web stranice, JSON/RSS/XML/CSV dovode i webhooks (event.promijenjen, zarade.promijenjene). Nije potrebna akcija.
  • — Partner API v1: događaji, jedan događaj, zarade i pješčanik. Nije potrebna akcija.