195 Riiki3 400 716 Kohta3 004 607+ Artistilehte 12 044 921+ Ettevõttelehte · Saadaval 417+ keeles

Partner API Quick Start

Teie esimene integratsioon sobib ühele ekraanile.

Proovi seda nüüd, pole võtit, pole registreerumist.

Ava see aadress brauseris. Kohe näete näidissündmusi.

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

    Testivõtme hankimine

    Logige sisse, öelge meile, kes te olete, ja vajutage Loo testvõti. Algab tt_test_ ja näeb ainult näidissündmusi.

  2. 2

    Sündmuste otsimine

    Küsi linna sündmuste kohta.

    curl "https://api.timtim.live/v1/events?city=Washington&category=music" \
      -H "Authorization: Bearer tt_test_YOUR_KEY"
  3. 3

    Sündmuse näitamine

    Igal üritusel on kaardile nimi, kuupäev, koht, pilt, hind ja valmissildid.

  4. 4

    Ostu_urli kasutamine

    Kasutage ostu_urli, mis me teile anname. Just nii. TimTim.Live käepidemed selle lingi sees.

  5. 5

    Tulemuste näitamine

    Vaadake inimesi saadetud, piletid müüdud ja tulu oma armatuurlauale, või küsige neid.

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

TimTim.Live Staatus

Viide

Kuhu taotlusi saata?

https://api.timtim.live/v1

Sinu ühendusvõti

Saada võti autentimise päises. Testivõtmed (tt_ test_) on ainult proovisündmused. Kodulehe võtmed (tt_pk_live_) saavad istuda veebilehel ja lugeda ainult sündmusi. Serveri võtmed (tt_sk_live_) jäävad serverisse ja võivad lugeda ka tulu. Me näitame võtit, kui see on kaitstud.

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;
}

Filtrid

city
Sündmused selles linnas.
country
Kahetäheline riigikood, näiteks USA.
category
Näiteks muusika, festival või konverents.
from
Sündmused sellel kuupäeval või pärast seda (2026-10-20).
to
Sündmused sellel kuupäeval või enne seda.
changed_since
Ainult sündmused, mis muutusid pärast seda aega.
commissioned
tõene = ainult sündmused, mis maksavad tasu.
minimum_earnings
Ainult sündmused, mis maksavad vähemalt nii palju pileti eest.
near
Koht, näiteks Pariisi lähedal,FR.
limit
Mitu sündmust ühe lehekülje kohta, 1 kuni 100 (20, kui jätta see välja).

Ainult ütle mulle, mis muutus.

Salvesta viimase sünkroniseerimise aeg ja saada see muudetud kujul. Saad ainult sündmusi, mis muutusid, kaasa arvatud tühistamised ja väljamüüdud showd. Ühtegi veebikonksu pole vaja. Sündmused, mida sa pead lõpetama, tulevad tagasi tagasi nimekirja.

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

Rohkem kui üks lehekülg

Kui vastus on järgmine, saada see tagasi kursor = saada järgmine lehekülg. Kui järgmine on tühi, on sul kõik olemas.

GET https://api.timtim.live/v1/events?city=Paris&cursor=eyJtIjoiZCIs…

Palk

Iga üritus on ära teeninud. Kui teenimine.abikõlblik on vale, sündmus ei ole tasu ~ see on ikka väärt näidata. Kui see on tõsi, teenida.kirjeldus ütleb, mida sa saad, näiteks "$5 ühe toetuskõlblik pilet." Kui ostu makstakse tagasi, makstakse tasu tagasi.

Puistevood (kõik ühes failis)

Säästa oma armatuurlauale puistesööta. Siis lae alla iga sündmus, mida see katab ühes ziped failis, oma serveri võti: GET /v1/bulk / FEED_ID.ndjson.gz või .csv.gz. Lisama?changed_alates= ainult mis muutunud, sealhulgas sündmuste maha. Test klahvid võivad proovida seda nüüd; live kasutamine vajab TimTim.Live läbivaatamine.

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

Piletite müümine omaenda rakenduses (manustatud kaubandus)

Suured partnerid saavad hoida ostjaid oma rakenduses. Küsige GET /v1/events/EVENT_ID/piletid selle eest, mis on müügil, seejärel POSTI /v1/orders ostja valik. Tellijale avaneb TimTim.Live makselink; müük krediteeritakse otse teie ettevõttele. Testvõtmed võivad seda nüüd proovida. Elus kasutamiseks on vaja TimTim.Live ülevaade ja kaardimaksed sisse lülitatud.

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": "…"}

Kaardiga seotud pakkumised (pangad ja preemiaprogrammid)

GET /v1/offers näitab iga sündmus, mis maksab tasu pakkumise. Igas pakkumises on korraldaja, kuupäevad, mida saate osta, hind, koht ja tasu. Teie klient aktiveerib selle läbi oma tracked link, ja tasu makstakse teie firma kaudu /v1/earnings. Testvõtmed vt näidise pakkumisi. Otsepakkumised vajavad TimTim.Live ülevaadet. Kaardimaksete sobitamiseks on vaja lepingut kaardivõrgu või pangaga ning see ei ole ühendatud.

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

Sündmuse staatus ja piletid

olek on ajastatud, edasi lükatud, ajastatud, tühistatud, müüdud välja või lõpetatud. piletid.saadavus on saadaval, piiratud, müüdud_out, not_on_sale või lõppenud. Kui sündmus on tühistatud, võtke see maha.

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

Kui kiiresti sa võid küsida

Testi võtmed: 60 soovi minutis. Elus võtmed: 120 minutis. Läheb kiiremini saab 429 vastus Retry-Pärast, mitu sekundit oodata.

Milliseid sündmusi sa saad

Sündmused, mis TimTim.Live korraldajad luua ja valida jagada. Teistest piletisaitidest imporditud sündmused ei kuulu kunagi siia, sest meil ei ole õigust neid jagada.

Mida me kunagi ei saada

Ostja nimed, e-posti aadressid, koduaadressid, telefoninumbrid ja kaardi andmed. Partneri API jagab sündmuste infot, mitte meie liikmeid.

Veebilehe vidin

Üks rida HTML näitab sündmusi igal veebilehel. Kasuta veebilehe võtit (tt_pk_live_) ja lisa oma veebileht võtme lubatud nimekirja. Ilma võtmeta näitab see proovisündmusi.

<script src="https://timtim.live/widget/events.js"
        data-key="tt_pk_live_YOUR_WEBSITE_KEY"
        data-city="Washington" data-category="music" async></script>

Võimalused: andmelinn, andmeriik, andmekategooria, andmelimiit (1...24), andmed-teen="true", andmelang ja andmevärv.

OAuth 2.0 (suured integratsioonid)

Vabatahtlik. Tee armatuurlaual OAuthi klient. Vahetage kliendi ID ja salajane juurdepääs märgile, mis kestab üks tund. Saada see märk võtme asemel. Saladus kunagi reisib oma API kõned, ja sa võid küsida vähem ulatusi kui klient on.

# 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"

Lõpp märgi alguses, postita see /v1/oauth /revoke sama kliendi ID ja saladus. Lülitades kliendi välja oma armatuurlaual lõpetab kõik oma märgid korraga.

Serverite võtme lukustamine

Vabatahtlik. Armatuurlaual, leida server võti, test võti või OAuth klient. Avage "Lock minu serveritele" ja loetlege serverite avalikud aadressid. Väljakutsed ja žetoonide päringud ei ole ip_not_lubatud, isegi õige võtmega.

Tellija sertifikaadid (MTLS), suurtele ettevõtetele: anna meile oma serveri ID-kaart (sertifikaat) ja kinnita see võtme külge. Vt https://api.timtim.live koos sellega. Meie vastame ainult sellele serverile, mis seda sertifikaati omab.

# 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 pluginName

WordPress? Paigalda TimTim.Live Sündmused: block ja shortcode, mis näitavad sündmusi oma TimTim.Live pileti lingid. See on tehtud TimTim.Live, räägib ainult timtim.live, ja uuendused ainult timtim.live.

Laadi fail Plugins → Lisa uus → Lae plugin. Asetage oma veebilehe võti seaded → TimTim.Live Sündmused ja vajutage Test Connection. Siis lisada TimTim.Live Sündmused blokeerida mis tahes lehel.

Lae WordPress Plugin
[timtim_events city="Washington" category="music" limit="6"]

Uudised

Samad sündmused nagu JSON Feed, RSS, XML, CSV või kalendrifail (.ics). Google'i kalender, Apple Calendar ja Outlook võivad kalendrit tellida. Feed lugejad ei saa saata päised, nii panna veebilehe võti või test võti?key=. Serveri võtit pole kunagi lingile pandud.

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

Webhookid

Lisage armatuurlauale aadress ja saadame sõnumi, kui midagi muutub: sündmus.muutunud või tulu.muutunud. Webhooks on vabatahtlik ~ changed_sest annab teile sama teavet.

{
  "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"
    }
  }
}

Kontrolli iga teadet: see on allkirjastatud sinu saladusega. Keelduge kõigest, mis on vanem kui viis minutit, ja ignoreerige TimTim-Delivery-Id te olete juba hakkama saanud.

// 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);
});

Vasta iga 2xx-ga 10 sekundi jooksul. Kui ei, proovime uuesti 1 minut, 5 minutit, 30 minutit, siis 2, 6, 12 ja 24 tundi, siis lõpetage. Me ei jälgi kunagi ümbersuunamisi.

Liivakast

Testivõtmed saavad proovisündmused, millel on märge "TESTEVENT" ® NO REAL RAHA. Avage buy_url, vajutage Buy Test Pilet, siis küsige oma tulu. Simuleeri raha tagasi ja vaata, kuidas see tagasi pöörab.

Kui midagi läheb valesti

Vead seletavad end lihtsate sõnadega, pealkirja ja sellega, mida edasi teha. Igal vastusel on TimTim-Request-Id. Saada see meile ja me leiame su palve.

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

Leping

Täielik kirjeldus iga välja, OpenAPI formaadis oma tööriistu lugeda.

Lae openapi.yaml

Kuidas elus võtmed avanevad

Testivõti töötab kohe. Live võtmed, isik kell TimTim.Live vaatab oma ettevõtte nimi, oma kodulehel ja kuidas sa näidata sündmusi. Sa näed vastust oma armatuurlaual.

TimTim.Live API uuendused

Versioon 1 ainult kasvab. Lisame uusi asju. Me ei eemalda ega nimeta ümber seda, mis on juba olemas.

  • — Sündmuste vastused kannavad nüüd ETag'i. Saatke see tagasi kui "If-None-Match," et saada kiiresti 304, kui midagi ei muutunud. Vabatahtlik.
  • — Kodulehe võtmed loevad nüüd iga külastaja ise, nii hõivatud saidid jätkata tööd. Mingit tegevust pole vaja.
  • — Kliendi sertifikaadid (MTLS) on avatud: viige sertifikaat armatuurlauale. Vabatahtlik. Mingit tegevust pole vaja.
  • — Pulk feeds: iga sündmus, mida võite näidata, ühes failis, kell GET /v1/bulk. Vabatahtlik. Mingit tegevust pole vaja.
  • — API-l on oma aadress: https://api.timtim.live/v1. https://timtim.live/v1 jätkab töötamist. Mingit tegevust pole vaja.
  • — Sinu enda kaubamärgiga kassalehekülg at timtim.live/checkout. Vabatahtlik. Mingit tegevust pole vaja.
  • — Piletite müük omaenda rakenduses: GET /v1/events/EVENT_ID/piletid ja POST /v1/orders. Vabatahtlik. Mingit tegevust pole vaja.
  • — Avalik staatuse leht /partnerid / staatus, kontrollitakse iga minut. Mingit tegevust pole vaja.
  • — Kuuaruanded ettevõtetele: GET /v1/Solutions. Mingit tegevust pole vaja.
  • — Postbacks: lisada ?sub_id= et osta link ja me saadame selle sulle tagasi koos müügiga. Vabatahtlik. Mingit tegevust pole vaja.
  • — Kaardiga seotud pakkumised pankadele ja preemiad programmid: GET /v1/offers. Vabatahtlik. Mingit tegevust pole vaja.
  • — Kalender feed: /v1/feeds/events.ics Google'i kalendri, Apple'i kalender ja Outlook. Mingit tegevust pole vaja.
  • — Lukusta võti oma serverid: IP lubatud nimekirjad nüüd, kliendi sertifikaadid (mTLS) on api.timtim.live. Vabatahtlik. Mingit tegevust pole vaja.
  • — OAuth 2.0 klient volikirjad suurte integratsioonide: POST /v1/oauth/token ja /v1/loa/revoke. Võtmed töötavad edasi. Mingit tegevust pole vaja.
  • — WordPress plugin 1.0.0: plokk, shortcode ja seaded lehel. See uuendab end Timtim.live'ist. Mingit tegevust pole vaja.
  • — Website vidin, JSON/RSS/XML/CSV feeds ja veebihooks (sündmus muutunud, tulu. muutunud). Mingit tegevust pole vaja.
  • — Partner API v1: sündmused, üks sündmus, tulu, ja liivakast. Mingit tegevust pole vaja.