Meld aan

195 Lande3 400 716 Plekke3 004 607+ Kunstenaarsblaaie 11 023 119+ Besigheidsblaaie · Beskikbaar in 417+ Tale

Bestuurder API ← Vinnige Begin

Jou eerste integrasie pas op een skerm.

Probeer om dit nou π geen sleutel, geen teken-op

Maak hierdie adres in jou blaaier oop. Jy sal dit dadelik sien gebeur.

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

    Kry 'n toetssleutel

    Teken in, vertel ons wie julle is, en druk Skep Test-sleutel. Dit begin met tt_tes en sien slegs monstergebeure.

  2. 2

    Vind items

    Vra vir gebeure in ' n stad.

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

    Vertoon die volgende belangrike boodskap

    Elke gebeurtenis het 'n naam, datum, plek, beeld, prys en gereed-gemaakte etikette vir jou kaart.

  4. 4

    Gebruik die koop_url

    Gebruik die koop_url wat ons jou gee. Dit is dit. TimTim.Live handvatsels binne daardie verbinding.

  5. 5

    Bekyk resultate

    Sien hoe mense dit stuur, kaartjies verkoop en verdien op jou paneelbord of daarvoor vra.

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

TimTim.Live-status

Verwysing

Waar om versoeke te stuur

https://api.timtim.live/v1

Jou Verbinding SleutelName

Stuur u sleutel in die magtigingstitel. Toetssleutels (t_toets_) sien slegs monstergebeure. Websleutels (t_pk_ive_) kan in 'n webblad sit en slegs gebeurtenisse lees. Bedienersleutels (t_sk_we_) bly op jou bediener en kan ook inkomste lees. Ons wys ' n sleutel wat ons eens in die geval van geisja kan beskerm.

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

Filters

city
Gebeure in hierdie stad.
country
Tweeletter land kode, vir voorbeeld Us.
category
Byvoorbeeld, musiek, fees of konferensie.
from
Aktiwiteite op of na hierdie datum (2026-10-20).
to
Aktiwiteite op of voor hierdie datum.
changed_since
Slegs gebeurtenisse wat ná hierdie tyd verander het.
commissioned
waar = Slegs gebeure wat 'n beloning betaal.
minimum_earnings
Slegs gebeurtenisse wat ten minste hierdie baie per kaartjie betaal.
near
'n Plek naby byvoorbeeld=Parys,FR.
limit
Hoeveel gebeurtenisse per bladsy, 1 tot 100 (20 as jy dit uitlaat).

Vertel my net wat verander het

Stoor die tyd van die laaste sinkron en stuur dit as verander_aan. Jy kry slegs gebeurtenisse wat verander het 0°) insluitend intrekkings en verkoop-uitvertonings. Geen webhoek nodig nie. Aktiwiteite wat jy moet stop vertoon kom terug in die teruggetrokke lys.

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

Meer as een bladsy

As die antwoord volgende het, stuur dit terug as plekwyser=om die volgende bladsy te kry. Wanneer volgende leeg is, het jy alles.

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

Oorbleiwende

Elke geleentheid het verdien. As dit vals is om geld te verdien, is dit nog steeds die moeite werd om dit te toon. As dit waar is, verdien.description sê wat jy kry, byvoorbeeld "$5 per hubare kaartjie". As die aankope hervat word, word die beloning omgekeer.

Grootmaat voed (alles in een lÃaer)

Stoor 'n groot aantal kos op jou paneelbord. Skakel dan elke gebeurtenis af wat dit dek in een gezipte lÃaer, met jou bediener sleutel: KRY /v1/bulk/FED_ID.ndjson.gz of .csv.gz. Voeg by ?changed_popt=vir slegs wat het verander, insluitend gebeurtenisse geneem. Toetssleutels kan dit nou probeer; lewensgebruik het ' n TimTim.Live hersiening nodig.

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

Verkoopkaartjies in jou eie app (beveelde handel)

Groot maats kan kopers op hulle eie punt hou. Vra KRY /v1/vents/WENT_ID/tickets vir wat te koop is, dan POS /v1 /ordes met die koper se keuse. Jy kry ' n TimTim.Live betalingsverbinding om vir die koper oop te maak; die verkoop word regstreeks aan jou maatskappy toegeskryf. Toetssleutels kan dit nou probeer. Lewegebruik het ' n TimTim.Live hersiening en kaartbetalings nodig wat aangeskakel is.

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

Gelaaide aanbiedinge (banke en beloningsprogramme)

KRY /v1/offer vertoon elke gebeurtenis wat ' n beloning as ' n aanbod betaal. Elke aanbod het die organiseerder, die datums wat jy kan koop, die prys, die plek en die beloning. Jou klant aktiveer dit deur middel van jou nagespeurde verbinding, en die beloning word deur /v1/earnings aan jou maatskappy betaal. Toetssleutels wat monster bied. Lewe bied ' n TimTim.Live hersiening nodig. Ooreenstemmende kaart betalings het direk ' n ooreenkoms met ' n kaartnetwerk of bank nodig, en is nie verbind nie.

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

Geleentheidstatus en kaartjies

status word beplan, uitgestel, hervertel, gekanselleer, verkoop_uit of voltooi. kaartjies is beskikbaar, beperk, verkoop_out, nie_on_sale of geëindig. Wanneer 'n gebeurtenis gekanselleer word, neem dit af.

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

Hoe vinnig jy kan vra

Toetssleutels: 60 versoeke per minuut. Lewenssleutels: 120 per minuut. Om vinniger te gaan kry 'n antwoord van 429 met herprobeer-na, die aantal sekondes om te wag.

@ info: whatsthis

Gebeure wat TimTim.Live organiseerders skep en kies om te deel. Gebeure wat ons uit ander kaartjiewerwe ingevoer het, word nooit ingesluit nie, want ons besit nie die reg om dit met ander te deel nie.

Wat ons nooit stuur nie

Kooper name, e-posadresse, huisadresse, telefoonnommers en kaartbesonderhede. Die metgesel API deel inligting, nie ons lede nie.

Name

Een lyn van Html vertoon gebeurtenisse op enige webwerf. Gebruik 'n webwerf (t_pk_ive_) en voeg jou webwerf by die sleutel se beskikbare lys. Met geen sleutel toon dit monstergebeure nie.

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

Opsies: data-city, data-telling, data-kategorie, data-limit (10°)24), data-earn=" Waar gemerk ", data-lang en data-color.

Ohmut 2. 0 (groot integrasie)

Opsionele. Maak 'n OKt kliënt op jou paneelbord. Handel sy kliënt Id en geheim vir 'n toegangsbewys wat duur een uur. Stuur daardie teken in plaas van 'n sleutel. Die geheim reis nooit met jou API-oproepe nie, en jy kan vra vir minder omvang as wat die kliënt het.

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

Om 'n teken vroeg te beëindig, gee POS dit aan /v1/oeuth/revoke met dieselfde kliënt ID en geheim. Om die kliënt op jou paneelbord af te Skakel, eindig al sy tekens dadelik.

Sluit 'n sleutel na u bedieners

Opsionele. Op jou paneelbord, soek 'n bediener-sleutel, toetssleutel of OAuth-kliënt. Open "Sluit na my bedieners" en lys jou bedieners se openbare adresse. Calls XXIII and Profements ooit anders word geweier met ip_not_inlaat, selfs met die regte sleutel.

Kliënt sertifikate (mTLS), vir groot maatskappye: gee ons jou bediener se ID kaart ('n sertifikaat) en spel dit aan 'n sleutel. Bel dan https://api.timtim. Ons antwoord slegs die bediener wat daardie sertifikaat hou.

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

Inprop vir lettertipes

Gebruik woordress? Installeer TimTim.Live geleenthede: ' n blok en ' n kortkode wat gebeure met jou eie TimTim.Live kaartjieverbindings vertoon. Dit word gemaak deur TimTim.Live, praat net met timtim.

Oplaai die lêer in Inprop modules → Voeg by Nuwe → Oplaai inprop module. Plak jou webwerf sleutel in Instellings → TimTim.Live Aktiwiteite en druk Toets Verbinding. Voeg dan die TimTim.Live gebeurtenisseblok by enige bladsy.

Aol Oombliklike Boodskapper KliëntComment
[timtim_events city="Washington" category="music" limit="6"]

StromeComment

Dieselfde gebeure as JSONCSS, RSS, XML, CSV of ' n kalenderlêer (.ics). Google Kalenders, Apple Kalenders en Outlook kan op die kalender inteken. Voer lesers kan nie opskrifte stuur nie, so plaas ' n webwerf of ' n toetssleutel in?key=. Moet nooit 'n bediener-sleutel in 'n skakel plaas nie.

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

Uitpakkies

Voeg by 'n adres op jou paneelbord en stuur dit 'n boodskap wanneer iets verander: gebeurtenis. Veranderd of inkomste. Veranderd. Webhoeke is opsionele 539 verander_opslag gee jou dieselfde inligting.

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

Bevestig elke boodskap: dit is geteken met jou geheim. Weier enigiets ouer as vyf minute, en ignoreer 'n TimTim-Verlossing-Id jy het reeds hanteer.

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

Antwoord met enige 2xx binne 10 sekondes. Indien nie, probeer ons weer na 1 minuut, 5 minute, 30 minute, dan 2, 6, 12 en 24 uur, en stop dan. Ons volg nooit die spoor nie.

Die sandboks

Toetssleutels kry monster aktiwiteite gemerk TEST EESNY GEEN WERKLIKHEID nie. Open 'n koper, druk koop Ticket, vra dan vir jou inkomste. Simuleer ' n koel punt en kyk hoe dit omgekeer word.

Wanneer iets skeef loop

Foute verduidelik hulleself in eenvoudige woorde, met ' n titel en wat om volgende te doen. Elke antwoord bevat 'n TimTim-Request-Id. Stuur dit aan ons, en ons kan u versoek vind.

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

Die kontrak

Die volledige beskrywing van elke veld, in die OpenAPI formaat wat jou gereedskap kan lees.

Aflaai hervat

Hoe lewende sleutels oop is

Jou toets sleutel werk dadelik. Vir lewende sleutels kyk iemand by TimTim.Live na jou maatskappynaam, jou webwerf en hoe jy gebeure sal wys. Jy sien die antwoord op jou paneelbord.

TimTim.Live API Dateer op

Weergawe 1 groei net. Ons voeg nuwe dinge by. Ons verwyder of hernoem nie wat reeds daar is nie.

  • — Geleentheidantwoorde dra nou ' n ETag. Stuur dit terug as As-Geen- ooreenstemming na kry 'n vinnige 304 wanneer niks verander. Opsionele.
  • — Websleutels tel nou elke besoeker op hulle eie, en daarom hou besige webwerwe aan werk. Geen aksie nodig nie.
  • — Klient sertifikate (mTLS) is oop: pen jou sertifikaat na 'n sleutel op jou paneelbord. Opsionele. Geen aksie nodig nie.
  • — Grootmaat voer: elke gebeurtenis wat jy dalk in een lêer sal vertoon, by KRY /v1/bulk. Opsionele. Geen aksie nodig nie.
  • — Die API het sy eie adres: https://api.tim.v1. https://timtimim. alive/v1 hou aan werk. Geen aksie nodig nie.
  • — Jou eie gebrandmerkde tjek bladsy by timtim. alive/ checkout. Opsionele. Geen aksie nodig nie.
  • — Verkoopkaartjies in jou eie app: KRY /v1/dets/WENT_ID/tickets en POS /v1 /ordes. Opsionele. Geen aksie nodig nie.
  • — 'n openbare status bladsy by /parenters/status, nagegaan elke minuut. Geen aksie nodig nie.
  • — Maandelikse verklarings vir maatskappye: KRY /v1/settle. Geen aksie nodig nie.
  • — Terugslae: voeg by ?sub_id= na ' n koop skakel en ons stuur dit terug na jou met die verkoop. Opsionele. Geen aksie nodig nie.
  • — Gebleikte aanbiedings vir banke en belonings programme: KRY /v1/offers. Opsionele. Geen aksie nodig nie.
  • — Kalenders voer: //v1/feds/ resents.ics vir Google Kalenders, Kalenders en Outlook. Geen aksie nodig nie.
  • — Sluit 'n sleutel na jou bedieners: ip toelaatliste nou, kliënt sertifikate (mTLS) op api.timtim.ive. Opsionele. Geen aksie nodig nie.
  • — Ohuth 2. 0 kliënt getuig van groot integrasie: POS /v1/outh/token en /v1 /auth/revoke. Sleutels hou aan werk. Geen aksie nodig nie.
  • — Woordres inprop 1.0: 'n blok,' n kortkode en 'n instellingsblad. Dit werk vanself van timtim. Geen aksie nodig nie.
  • — Webwerwe, JSON/RSS/XML/CSV voed en webhoeke (verander, inkomste.changed). Geen aksie nodig nie.
  • — Bestuurder API v1: aktiwiteite, een gebeurtenis, verdienste en die sandboks. Geen aksie nodig nie.