Prijava

195 država3.400.716 mjesta3.004.607+ stranica umjetnika 11.023.107+ stranica tvrtki · Dostupno na 417+ jezika

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. 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. 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đaj

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

  4. 4

    Koristi buy_url

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

  5. 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

Status TimTim.Live

Referenca

Gdje poslati zahtjeve

https://api.timtim.live/v1

Vaš 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
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 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:00Z

Viš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:00Z

Prodati 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=US

Stanje 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_konpa

Koliko 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=Paris

Web-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.

  • 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 alat može pročitati.

Preuzmite openapi.yaml

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.