
🏠 Domov
Budovat naději
Pomozte každé rodině mít domov — financováno přes OseloHelp.com, naši neziskovou organizaci osvobozenou od daní.
Celosvětová distribuce hudby: již brzy!
3 004 605+ stránek umělců · 8 684 002+ stránek firem · Dostupné v 417+ jazycích

Vaše první napojení se vejde na jednu obrazovku.
Otevřete tuto adresu v prohlížeči. Hned uvidíte ukázkové akce.
https://timtim.live/api/partner-network/demo?city=WashingtonPřihlaste se, řekněte nám, kdo jste, a stiskněte „Vytvořit testovací klíč“. Začíná na tt_test_ a vidí jen ukázkové akce.
Zeptejte se na akce ve městě.
curl "https://api.timtim.live/v1/events?city=Washington&category=music" \
-H "Authorization: Bearer tt_test_YOUR_KEY"Každá akce má název, datum, místo, obrázek, cenu a hotové popisky pro vaši kartu.
Použijte buy_url, který vám dáme. To je vše. TimTim.Live si v tom odkazu sám zapíše, že kupující přišel od vás.
Uvidíte, kolik lidí jste poslali, kolik vstupenek se prodalo a kolik jste vydělali — v přehledu nebo dotazem.
GET https://api.timtim.live/v1/earningshttps://api.timtim.live/v1Posílejte klíč v hlavičce Authorization. Testovací klíče (tt_test_) vidí jen ukázkové akce. Klíče pro web (tt_pk_live_) mohou být na webové stránce a jen čtou akce. Serverové klíče (tt_sk_live_) zůstávají na vašem serveru a umí číst i výdělky. Klíč ukážeme jen jednou — dobře si ho schovejte.
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;
}citycountrycategoryfromtochanged_sincecommissionedminimum_earningsnearlimitUložte si čas poslední synchronizace a pošlete ho jako changed_since. Dostanete jen akce, které se změnily — včetně zrušených a vyprodaných. Webhook není potřeba. Akce, které už nesmíte zobrazovat, přijdou v seznamu withdrawn.
GET https://api.timtim.live/v1/events?changed_since=2026-10-06T10:00:00ZPokud odpověď obsahuje next, pošlete ho zpět jako cursor= a dostanete další stránku. Když je next prázdný, máte všechno.
GET https://api.timtim.live/v1/events?city=Paris&cursor=eyJtIjoiZCIs…Každá akce má earn. Pokud je earn.eligible false, akce nemá odměnu — pořád stojí za to ji ukázat. Pokud je true, earn.description řekne, co dostanete, například „$5 za každou oprávněnou vstupenku“. Pokud se za nákup vrátí peníze, odměna se odečte zpět.
Uložte si hromadný kanál ve svém přehledu a pak stáhněte všechny jeho akce v jednom komprimovaném souboru: GET /v1/bulk/FEED_ID.ndjson.gz nebo .csv.gz, se svým serverovým klíčem. Přidejte ?changed_since= jen pro změny, včetně stažených akcí. Testovací klíče to mohou vyzkoušet už teď; ostré použití vyžaduje kontrolu od TimTim.Live.
GET https://api.timtim.live/v1/bulk/bfs_YOURFEED.ndjson.gz?changed_since=2026-10-06T00:00:00ZVelcí partneři mohou nechat kupující ve své aplikaci. Zeptejte se GET /v1/events/EVENT_ID/tickets, co je v prodeji, a pak pošlete POST /v1/orders s volbou kupujícího. Dostanete platební odkaz TimTim.Live, který kupujícímu otevřete; prodej se připíše přímo vaší firmě. Testovací klíče to mohou zkusit hned. Skutečné použití potřebuje kontrolu od TimTim.Live a zapnuté platby kartou.
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": "…"}GET /v1/offers dává každou akci, která vyplácí odměnu, jako nabídku: pořadatele, data, kdy lze nakoupit, cenu, místo a odměnu. Váš zákazník ji aktivuje přes váš sledovaný odkaz a odměna se vaší firmě vyplatí přes /v1/earnings. Testovací klíče vidí ukázkové nabídky. Skutečné nabídky potřebují kontrolu od TimTim.Live. Přímé párování plateb kartou potřebuje dohodu s karetní sítí nebo bankou a není zapojené.
GET https://api.timtim.live/v1/offers?country=USstatus je scheduled, postponed, rescheduled, cancelled, sold_out nebo completed. tickets.availability je available, limited, sold_out, not_on_sale nebo ended. Když je akce zrušená, stáhněte ji.
GET https://api.timtim.live/v1/events/evt_test_washington_konpaTestovací klíče: 60 dotazů za minutu. Ostré klíče: 120 za minutu. Když budete rychlejší, dostanete odpověď 429 s Retry-After, tedy počtem sekund, kolik počkat.
Akce, které vytvoří pořadatelé TimTim.Live a rozhodnou se je sdílet. Akce převzaté z jiných vstupenkových webů nikdy nejsou zahrnuty, protože nemáme právo je sdílet.
Jména kupujících, e-mailové adresy, adresy bydliště, telefonní čísla a údaje karet. Partner API sdílí informace o akcích, ne o našich členech.
Jeden řádek HTML ukáže akce na jakémkoli webu. Použijte klíč pro web (tt_pk_live_) a přidejte svůj web do seznamu povolených webů klíče. Bez klíče ukazuje ukázkové akce.
<script src="https://timtim.live/widget/events.js"
data-key="tt_pk_live_YOUR_WEBSITE_KEY"
data-city="Washington" data-category="music" async></script>Možnosti: data-city, data-country, data-category, data-limit (1–24), data-earn="true", data-lang a data-color.
Volitelné. Vytvořte OAuth klienta v přehledu. Pak vyměňte jeho ID klienta a tajný klíč za přístupový token na jednu hodinu a posílejte tento token místo klíče. Tajný klíč nikdy necestuje s vašimi voláními API a můžete požádat o méně oprávnění (scopes), než má klient.
# 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"Chcete-li token ukončit dřív, pošlete ho přes POST na /v1/oauth/revoke se stejným ID klienta a tajným klíčem. Když klienta v přehledu vypnete, skončí všechny jeho tokeny najednou.
Volitelné. Ve svém přehledu otevřete „Zamknout na mé servery“ u serverového klíče, testovacího klíče nebo OAuth klienta a zapište veřejné adresy svých serverů. Volání — i žádosti o token — odjinud odmítneme s ip_not_allowed, i se správným klíčem.
Klientské certifikáty (mTLS): připojte svůj klientský certifikát TLS ke klíči a pak s ním volejte https://api.timtim.live. Každé volání musí ten certifikát ukázat; TLS handshake dokazuje, že máte jeho soukromý klíč.
# 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"Používáte WordPress? Nainstalujte TimTim.Live Events: blok a shortcode, které ukazují akce s vašimi vlastními odkazy na vstupenky TimTim.Live. Dělá ho TimTim.Live, mluví jen s timtim.live a aktualizuje se jen z timtim.live.
Nahrajte soubor v Pluginy → Instalace pluginů → Nahrát plugin. Vložte svůj klíč pro web do Nastavení → TimTim.Live Events a klikněte na Test Connection. Pak přidejte blok TimTim.Live Events na jakoukoli stránku.
Stáhnout plugin pro WordPress[timtim_events city="Washington" category="music" limit="6"]Stejné akce jako JSON Feed, RSS, XML, CSV nebo kalendář (.ics), který můžete odebírat v Google Calendar, Apple Calendar a Outlook. Čtečky kanálů neumí posílat hlavičky, proto dejte klíč pro web nebo testovací klíč do ?key=. Nikdy nedávejte serverový klíč do odkazu.
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=ParisPřidejte adresu na svém přehledu a my na ni pošleme zprávu, když se něco změní: event.changed nebo earnings.changed. Webhooky nejsou povinné — changed_since vám dá stejné informace.
{
"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"
}
}
}Kontrolujte každou zprávu: je podepsaná vaším tajemstvím. Odmítněte vše, co je starší než pět minut, a nevšímejte si TimTim-Delivery-Id, které jste už zpracovali.
// 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);
});Odpovězte jakýmkoli 2xx do 10 sekund. Pokud ne, zkusíme to znovu po 1 minutě, 5 minutách, 30 minutách, potom po 2, 6, 12 a 24 hodinách, a pak přestaneme. Nikdy nesledujeme přesměrování.
Testovací klíče dostanou ukázkové akce označené TESTOVACÍ AKCE — ŽÁDNÉ SKUTEČNÉ PENÍZE. Otevřete buy_url, stiskněte „Koupit testovací vstupenku“ a pak se zeptejte na své výdělky. Zkuste vrácení peněz a uvidíte, jak se částka odečte zpět.
Chyby se vysvětlí jednoduchými slovy: nadpis a co dělat dál. Každá odpověď nese TimTim-Request-Id. Pošlete nám ho a váš dotaz najdeme.
missing_keyPlease add your TimTim.Live key. Send it as: Authorization: Bearer tt_test_… — get a test key at /partners/dashboard.invalid_keyWe do not recognise that key. Check you copied the whole key, or make a new one at /partners/dashboard.revoked_keyThat key was switched off. Make a new key at /partners/dashboard.partner_inactiveThis partner account cannot use live keys right now. Your test key still works. Contact TimTim.Live partnerships to review the account.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.domain_not_allowedThis website is not allowed to use this key. Add the website to the key's allowed domains at /partners/dashboard.unknown_parameterWe do not know one of those parameters. See /partners/docs for the list.invalid_countryWe could not read that country. Use a two-letter code, for example country=US or country=FR.invalid_dateWe could not read that date. Dates look like 2026-10-20.invalid_changed_sinceWe could not read changed_since. Use a full time, for example changed_since=2026-10-06T10:00:00Z.invalid_booleanThat value must be true or false. For example commissioned=true.invalid_numberThat value must be a number. For example minimum_earnings=5.invalid_nearWe could not find that place. Try near=Paris,FR or city=Paris&country=FR.invalid_locationWe could not read that location. Send lat, lng and optionally radius in kilometres.invalid_limitlimit must be between 1 and 100. Leave it out to get 20.invalid_cursorThat cursor is not one we gave you. Use the `next` value from the previous page exactly as it came.event_not_foundWe could not find that event. It may have been removed, or it is not shared with partners.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.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.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.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.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.order_invalidWe could not read that order. See /partners/docs for the fields an order needs.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.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.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.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.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.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.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.not_foundThere is nothing at this address. The Partner API lives at /v1/events, /v1/events/{id}, /v1/offers and /v1/earnings.method_not_allowedThis address does not answer that method. The Allow header lists the methods it answers.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.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.certificate_requiredThis key needs your client certificate. Connect to https://api.timtim.live with the TLS client certificate pinned to this key.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.rate_limitedToo many requests — please slow down. Wait the number of seconds in Retry-After, then try again.server_errorSomething went wrong on our side. Please try again. If it keeps happening, send us your TimTim Request ID.Úplný popis každého pole ve formátu OpenAPI, který vaše nástroje umí přečíst.
Stáhnout openapi.yamlVáš testovací klíč funguje hned. U ostrých klíčů se člověk z TimTim.Live podívá na název vaší firmy, váš web a na to, jak budete akce ukazovat. Odpověď uvidíte ve svém přehledu.
Verze 1 jen roste. Přidáváme nové věci. Nic, co už existuje, neodebíráme ani nepřejmenováváme.
Naše poslání
Zveme každého, aby pomohl zanechat odkaz pro lidstvo.
Přidejte se ke třem misím, které nás všechny přežijí

Budovat naději
Pomozte každé rodině mít domov — financováno přes OseloHelp.com, naši neziskovou organizaci osvobozenou od daní.

Zachovat lidstvo skrze hudbu
Zachovat hudbu a příběhy lidstva na dalších 1 000+ let.

Inspirovat další generaci průzkumníků
Zpřístupnit možnost zkoumat vesmír všem.

Návrh kosmického letounu, který vzlétá z ranveje místo startu na raketě. Je to koncept, ne hotový stroj.
Podívejte se, jak to fungujeJak to všechno souvisí
Nic tady není samostatný byznys — každý krok posiluje ten další.
Jeden cíl. Mnoho podniků, které se navzájem podporují.
Ať posloucháte píseň, sdílíte příběh, nosíte merch, jdete na koncert, překládáte texty, doporučíte zemi, nebo to jen řeknete kamarádovi — stáváte se součástí něčeho, co má vydržet po generace.
Zapojit se může každý. Žádný příspěvek není příliš malý.
TimTim.Live — objevujte svět skrze hudbu.
Spojujeme lidi ve 195 zemích · nyní 3 004 605+ stránek umělců, které porostou až na 4+ milionů · 8 684 002+ stránek firem, které porostou až na 400 milionů · web bude přeložen do 417 místních jazyků světa.
TimTim.Live už mapuje 233 839 míst ve všech 195 zemích a dosahuje i ke komunitám o pouhých 1 000 lidech, mimo jiné:
Státy: 257 • Provincie: 1 690 • Hrabství: 4 808 • Okresy: 41 130 • Města: 13 471 • Městečka: 117 896 • Vesnice: 40 988
© 2026 TimTim.Live. Všechna práva vyhrazena.