Partnerių API — greita pradžia
Jūsų pirmoji integracija telpa viename ekrane.
Išbandykite dabar - nėra rakto, nėra registracijos
Atidarykite šį adresą savo naršyklėje. Iš karto pamatysite pavyzdinius įvykius.
https://timtim.live/api/partner-network/demo?city=Washington- 1
Gaukite bandymo raktą
Prisijunkite, praneškite mums, kas esate, ir paspauskite Sukurti bandymo raktą. Jis prasideda tt_test_ ir mato tik pavyzdinius įvykius.
- 2
Ieškoti renginių
Kviečiame į renginius mieste.
curl "https://api.timtim.live/v1/events?city=Washington&category=music" \ -H "Authorization: Bearer tt_test_YOUR_KEY" - 3
Rodyti įvykį
Kiekvienas įvykis turi savo kortelės pavadinimą, datą, vietą, vaizdą, kainą ir paruoštas etiketes.
- 4
Naudoti buy_url
Naudokite mūsų pateiktą buy_url. Tai viskas. TimTim.Live pati pasirūpina priskyrimu toje nuorodoje.
- 5
Peržiūrėti rezultatus
Žr. išsiųstus žmones, parduotus bilietus ir pajamas savo prietaisų skydelyje arba paprašykite jų.
GET https://api.timtim.live/v1/earnings
Nuoroda
Kur siųsti užklausas
https://api.timtim.live/v1Jūsų ryšio raktas
Siųskite savo raktą į leidimo antraštę. Testo klavišai (tt_test_) matyti tik pavyzdžių įvykius. Svetainės raktai (tt_pk_live_) gali sėdėti tinklalapyje ir skaityti tik įvykius. Serverio raktai (tt_sk_live_) lieka jūsų serveryje ir taip pat gali skaityti pajamas. Mes vieną kartą parodome raktą - saugokite jį.
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;
}Filtrai
city- Renginiai šiame mieste.
country- Dviejų raidžių šalies kodas, pavyzdžiui, JAV.
category- Pavyzdžiui, muzika, festivalis ar konferencija.
from- Įvykiai šią dieną arba po jos (2026-10-20).
to- Įvykiai prieš arba po šios datos.
changed_since- Tik įvykiai, kurie pasikeitė po šio laiko.
commissioned- true = tik tie įvykiai, kurie moka atlygį.
minimum_earnings- Tik tie, kurie moka bent jau tiek už bilietą.
near- Vieta, pavyzdžiui, netoli = Paryžius, FR.
limit- Kiek įvykių viename puslapyje, nuo 1 iki 100 (20, jei jį paliksite).
Pasakyk man, kas pasikeitė
Išsaugokite savo paskutinio sinchronizavimo laiką ir išsiųskite jį kaip pakeistą_nuo. Galite gauti tik pasikeitusius įvykius, įskaitant atšaukimus ir išparduotus pasirodymus. Webhook nereikia. Įvykiai, kuriuos turite nustoti rodyti, grįžkite į atšauktą sąrašą.
GET https://api.timtim.live/v1/events?changed_since=2026-10-06T10:00:00ZDaugiau nei vienas puslapis
Jei atsakymas yra kitas, siųsti jį atgal kaip žymeklį = gauti kitą puslapį. Kai sekantis yra tuščias, tu turi viską.
GET https://api.timtim.live/v1/events?city=Paris&cursor=eyJtIjoiZCIs…Pelnas
Kiekvienas įvykis turi uždirbti. Jei earn.required yra klaidingas, įvykis neturi atlygio – jis vis dar verta parodyti. Jei tai tiesa, desk.description sako, ką jūs gaunate, pavyzdžiui, "$ 5 už tinkamą bilietą". Jei pirkinys grąžinamas, atlygis grąžinamas.
Masiniai kanalai (viskas viename faile)
Išsaugokite masinį srautą savo valdymo skydelyje. Tada su serverio raktu atsisiųskite visus jo apimamus renginius viename suglaudintame faile: GET /v1/bulk/FEED_ID.ndjson.gz arba .csv.gz. Pridėkite ?changed_since=, kad gautumėte tik tai, kas pasikeitė, įskaitant pašalintus renginius. Su bandomaisiais raktais galite išbandyti jau dabar; tikram naudojimui reikia TimTim.Live peržiūros.
GET https://api.timtim.live/v1/bulk/bfs_YOURFEED.ndjson.gz?changed_since=2026-10-06T00:00:00ZParduoti bilietus į savo app (Embedded komercija)
Dideli partneriai gali išlaikyti pirkėjus savo programoje. Paklauskite GET / v1/events / EVENT_ID / bilietų už tai, kas parduodama, tada POST / v1/užsakymai su pirkėjo pasirinkimu. Jūs gaunate TimTim.Live mokėjimo nuorodą, kad atidarytumėte pirkėjui; pardavimas yra įskaityta į jūsų įmonę tiesiogiai. Testo klavišai gali tai išbandyti dabar. Tiesioginiam naudojimui reikia TimTim.Live peržiūros ir įjungtų mokėjimų kortelėmis.
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": "…"}Su kortele susiję pasiūlymai (bankai ir atlygio programos)
GET / v1/ofers rodo kiekvieną įvykį, kuris moka atlygį kaip pasiūlymą. Kiekviename pasiūlyme yra organizatorius, datos, kurias galite nusipirkti, kaina, vieta ir atlygis. Jūsų klientas jį suaktyvina per jūsų stebimą nuorodą, o atlygis mokamas jūsų įmonei per /v1 / uždarbį. Bandymo klavišai žr. pavyzdžių pasiūlymus. Gyviems pasiūlymams reikia TimTim.Live peržiūros. Mokėjimų kortelėmis atitikimas tiesiogiai reikalauja susitarimo su kortelių tinklu ar banku ir nėra prijungtas.
GET https://api.timtim.live/v1/offers?country=USRenginio statusas ir bilietai
būsena yra planuojama, atidėta, pakeista, atšaukta, išparduota arba baigta. tickets.availability yra prieinamas, ribotas, išparduotas_out, not_on_sale arba baigtas. Kai renginys atšaukiamas, paimkite jį žemyn.
GET https://api.timtim.live/v1/events/evt_test_washington_konpaKaip greitai jūs galite paklausti
Testo raktai: 60 užklausimų per minutę. Gyvi raktai: 120 per minutę. Ėjimas greičiau gauna 429 atsakymą su Retry-After, sekundžių skaičius laukti.
Kokius renginius gausite
Įvykiai, kuriuos kuria ir kuriais dalinasi TimTim.Live organizatoriai. Įvykiai, kuriuos mes importavome iš kitų bilietų svetainių, niekada neįtraukiami, nes mes neturime teisės jais dalintis.
Ko niekada nesiunčiame
Pirkėjų vardai, el. pašto adresai, namų adresai, telefono numeriai ir kortelės duomenys. Partnerio API dalinasi renginio informacija, o ne mūsų nariais.
Svetainės valdiklis
Viena HTML eilutė rodo įvykius bet kurioje svetainėje. Naudokite svetainės raktą (tt_pk_live_) ir pridėkite savo svetainę prie rakto leidžiamo sąrašo. Be rakto jis rodo pavyzdinius įvykius.
<script src="https://timtim.live/widget/events.js"
data-key="tt_pk_live_YOUR_WEBSITE_KEY"
data-city="Washington" data-category="music" async></script>Parinktys: data-city, data-country, data-category, data-limit (1–24), data-earn="true", data-lang ir data-color.
OAuth 2.0 (didelės integracijos)
Neprivaloma. Padarykite OAuth klientą savo prietaisų skydelyje. Prekiaukite savo kliento ID ir slaptu prieigos žetonu, kuris trunka vieną valandą. Siųskite šį raktą vietoj rakto. Paslaptis niekada nekeliauja su jūsų API skambučiais, ir jūs galite paprašyti mažiau apimčių nei klientas.
# 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"Norėdami baigti žetoną anksti, POST jį į /v1/oauth / revoke su tuo pačiu kliento ID ir slaptumu. Kliento išjungimas jūsų prietaisų skydelyje vienu metu baigiasi visais jo žetonais.
Užrakinkite raktą į savo serverius
Neprivaloma. Valdymo skydelyje raskite serverio raktą, bandomąjį raktą arba OAuth klientą. Atidarykite „Užrakinti tik mano serveriams“ ir išvardykite savo serverių viešuosius adresus. Iškvietimai — ir prieigos rakto užklausos — iš bet kur kitur atmetami su ip_not_allowed, net jei raktas teisingas.
Kliento sertifikatai (mTLS), skirti didelėms įmonėms: duokite mums savo serverio ID kortelę (sertifikatą) ir prisegkite ją prie rakto. Tada skambinkite https://api.tim.live su juo. Atsakome tik į tą serverį, kuris turi šį sertifikatą.
# 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 įskiepis
Naudoti WordPress? Įdiekite TimTim.Live įvykius: bloką ir trumpą kodą, rodantį įvykius su savo TimTim.Live bilietų nuorodomis. Jis yra pagamintas TimTim.Live, kalbasi tik su timtim.live, ir atnaujina tik iš timtim.live.
Įkelkite failą per Įskiepiai → Pridėti naują → Įkelti įskiepį. Įklijuokite svetainės raktą skiltyje Nustatymai → TimTim.Live Events ir paspauskite „Tikrinti ryšį“. Tada į bet kurį puslapį pridėkite bloką TimTim.Live Events.
Parsisiųsti WordPress Plugin[timtim_events city="Washington" category="music" limit="6"]Pašarai
Tie patys renginiai JSON Feed, RSS, XML, CSV formatu arba kalendoriaus failu (.ics). Google Calendar, Apple Calendar ir Outlook gali prenumeruoti kalendorių. Srautų skaitytuvai negali siųsti antraščių, todėl svetainės raktą arba bandomąjį raktą įrašykite į ?key=. Niekada nedėkite serverio rakto į nuorodą.
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=ParisWebhook'ai
Valdymo skydelyje pridėkite adresą, ir mes į jį išsiųsime pranešimą, kai kas nors pasikeis: event.changed arba earnings.changed. Webhook'ai neprivalomi — changed_since suteikia tą pačią informaciją.
{
"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"
}
}
}Tikrinkite kiekvieną pranešimą: jis pasirašytas jūsų slaptuoju raktu. Atmeskite viską, kas senesnis nei penkios minutės, ir nepaisykite TimTim-Delivery-Id, kurį jau apdorojote.
// 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);
});Atsakymas su bet kuriuo 2xx per 10 sekundžių. Jei ne, bandykite dar kartą po 1 minutės, 5 minučių, 30 minučių, tada 2, 6, 12 ir 24 valandų, tada sustokite. Mes niekada nesekame peradresavimais.
Smėlio dėžė
Bandomieji raktai gauna pavyzdinius renginius, pažymėtus TEST EVENT — NO REAL MONEY. Atidarykite buy_url, paspauskite „Pirkti bandomąjį bilietą“, tada paprašykite savo uždarbio. Imituokite grąžinimą ir stebėkite, kaip jis atšaukiamas.
Kai kažkas negerai
Klaidos paaiškinti save paprastais žodžiais, su pavadinimu ir ką daryti toliau. Kiekvienas atsakymas turi TimTim-Request-Id. Atsiųskite mums ir mes rasime jūsų užklausą.
- 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.
Sutartis
Išsamus kiekvieno lauko aprašymas, openAPI formatu jūsų įrankiai gali skaityti.
Parsisiųsti openapi.yamlKaip atidaryti gyvus klavišus
Jūsų testo raktas veikia iš karto. Dėl gyvų raktų, žmogus, dirbantis " TimTim.Live", žiūri į jūsų įmonės pavadinimą, jūsų svetainę ir kaip parodysite įvykius. Atsakymą rasite savo skydelyje.
TimTim.Live API atnaujinimai
1 versija tik auga. Pridedame naujų dalykų. Mes nepašaliname ir nepervardijame to, kas jau yra.
- — Įvykio atsakymai dabar turi ETag. Siųskite jį atgal kaip "If-None-Match", kad gautumėte greitą 304, kai niekas nepasikeitė. Neprivaloma.
- — Dabar svetainės raktai skaičiuoja kiekvieną lankytoją atskirai, todėl užimtos svetainės nuolat dirba. Nereikėjo jokių veiksmų.
- — Kliento sertifikatai (mTLS) yra atidaryti: prisegti savo sertifikatą prie jūsų prietaisų skydelio rakto. Neprivaloma. Nereikėjo jokių veiksmų.
- — Masiniai kanalai: kiekvienas įvykis, kurį galite parodyti viename faile, GET /v1/bulk. Neprivaloma. Nereikėjo jokių veiksmų.
- — API turi savo adresą: https://api.tim.live/v1. https://timtim.life/v1 išlaiko darbą. Nereikėjo jokių veiksmų.
- — Jūsų firminis kasos puslapis timit.live/checkout. Neprivaloma. Nereikėjo jokių veiksmų.
- — Parduokite bilietus savo programėlėje: GET /v1/events/EVENT_ID/tickets ir POST /v1/orders. Neprivaloma. Nereikėjo jokių veiksmų.
- — Viešas būsenos puslapis /partneriai/statusas, tikrinamas kiekvieną minutę. Nereikėjo jokių veiksmų.
- — Mėnesio ataskaitos įmonėms: GET / v1/settlements. Nereikėjo jokių veiksmų.
- — Postbacks: pridėti ?sub_id= į pirkimo nuorodą ir mes atsiųsime jį atgal jums su pardavimu. Neprivaloma. Nereikėjo jokių veiksmų.
- — Su kortele susieti pasiūlymai bankams ir premijų programoms: GET /v1/offers. Neprivaloma. Nereikėjo jokių veiksmų.
- — Kalendoriaus kanalas: /v1/feeds/events.ics "Google" kalendorius, "Apple" kalendorius ir "Outlook". Nereikėjo jokių veiksmų.
- — Užrakinkite raktą į savo serverius: IP leidimų sąrašai dabar, kliento sertifikatai (mTLS) api.tim.live. Neprivaloma. Nereikėjo jokių veiksmų.
- — OAuth 2.0 kliento kredencialai didelėms integracijoms: POST /v1/oauth/token ir /v1/ oauth/revoke. Raktai vis dar veikia. Nereikėjo jokių veiksmų.
- — WordPress įskiepiai 1.0.0: blokas, trumpasis kodas ir nustatymų puslapis. Ji atnaujinama iš timtim.live. Nereikėjo jokių veiksmų.
- — Svetainės valdikliui, JSON/RSS/XML/CSV kanalai ir webhooks (event.changed, seasons.changed). Nereikėjo jokių veiksmų.
- — Partnerių API v1: įvykiai, vienas įvykis, uždarbis ir smėlio dėžė. Nereikėjo jokių veiksmų.