Ensaluti

195 Landoj3 400 716 Lokoj3 004 607+ Artistaj paĝoj 11 023 119+ Firmaaj paĝoj · Disponebla en 417+ Lingvoj

Name

Via unua integriĝo laŭ unu ekrano.

Provu ĝin nun "Fortor" neniu ŝlosilo, neniu signo-signo

@ info: tooltip Vi vidos specimenojn tuj.

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

    Ricevu testan ŝlosilon

    Subskribu, diru al ni, kiuj vi estas, kaj premu kreilon. Ĝi komenciĝas per tt_test kaj nur vidas specimenojn.

  2. 2

    Trovi eventojn

    Petu eventojn en urbo.

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

    @ info: tooltip

    Ĉiu evento havas nomon, daton, bildon, prezon kaj dufaritajn etikedojn por via karto.

  4. 4

    Uzi la aĉetos_urlon

    Uzu la buy_url kiun ni donas al vi. Jen ĉio. TimTim.Live prizorgas la atribuon ene de tiu ligilo.

  5. 5

    Montri rezultojn

    Vidu, ke homoj sendis biletojn por vendi kaj gajni sur via panelo, aŭ demandi ilin.

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

Stato de TimTim.Live

Referenco

Kien sendi petojn

https://api.timtim.live/v1

Via konektoŝlosilo

Sendu vian ŝlosilon en la Rajtigo. Testaj klavoj (t_test) vidas nur specimenojn. Retklavoj (t_plive_BAR_aŭ) povas sidi en TTT- paĝo kaj nur legi eventojn. Servilo-klavoj (t_skli) restu en via servilo kaj ankaŭ povas legi produktaĵojn. Ni montras ŝlosilon, kiu iam ajn ĝin tenas sekura.

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

Filtriloj

city
Eventoj de ĉi tiu urbo.
country
Dulitera landokodo, ekzemple US.
category
Ekzemple muziko, festivalo aŭ konferenco.
from
@ item: inlistbox Recurrence type
to
@ label: spinbox
changed_since
Nur okazaĵoj ŝanĝiĝis post ĉi tiu tempo.
commissioned
Veraj = nur eventoj pagas rekompencon.
minimum_earnings
Nur okazaĵoj pagas almenaŭ tiun ĉi bileton.
near
Loko, ekzemple proksime=Paris,FR.
limit
Kiom da eventoj po paĝo, 1 ĝis 100 (20 se vi lasas ĝin for).

Nur rakontu al mi, kio ŝanĝiĝis

Konservi la tempon de via lasta sinkronigado kaj sendu ĝin kiel ŝanĝitan ago. Vi ricevas nur eventojn, kiuj ŝanĝis la CUncon, inkluzive de la forigoj kaj vendotaj prezentaĵoj. Neniu TTT-o bezonis. Eventoj vi devas ĉesi montriĝi en la forira listo.

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

Pli ol unu paĝo

Se la respondo havas sekvan, sendu ĝin kiel kursilon por atingi la sekvan paĝon. Kiam la sekva estas malplena, vi havas ĉion.

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

Earningchina. kgm

Ĉiu evento gajniĝis. Se gajninto estas falsa, la evento ankoraŭ ne havas rekompencon ĉe "Rakendanto." Se ĝi veras, gajnas. Propreco diras, kion vi ricevas, ekzemple "$5 per komprenebla bileto." Se la aĉeto estas redonata, la rekompenco estas inversigita.

Bulk fluoj (ĉiamoj en unu dosiero)

Konservu amasan fluon en via panelo. Poste elŝutu ĉiun eventon kiun ĝi kovras en unu kunpremita dosiero, per via servila ŝlosilo: GET /v1/bulk/FEED_ID.ndjson.gz aŭ .csv.gz. Aldonu ?changed_since= por nur tio kio ŝanĝiĝis, inkluzive de forigitaj eventoj. Testaj ŝlosiloj povas provi ĝin nun; reala uzo bezonas kontrolon de TimTim.Live.

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

Vendu biletojn en via propra aplikaĵo (ilidista komerco)

Grandaj partneroj povas teni aĉetantojn en sia propra aplikaĵo. Petu GET /v1/events/EVENT_ID/tickets por vidi kio estas vendata, poste POST /v1/orders kun la elekto de la aĉetanto. Vi ricevas pagoligilon de TimTim.Live por malfermi por la aĉetanto; la vendo estas kreditata rekte al via firmao. Testaj ŝlosiloj povas provi ĝin nun. Reala uzo bezonas kontrolon de TimTim.Live kaj ŝaltitajn kartpagojn.

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

Kartkartoj (linkoj kaj rekompencantoj)

GET /v1/offers montras ĉiun eventon kiu pagas rekompencon kiel oferton. Ĉiu oferto havas la organizanton, la datojn kiam vi povas aĉeti, la prezon, la lokon kaj la rekompencon. Via kliento aktivigas ĝin per via spurata ligilo, kaj la rekompenco estas pagata al via firmao per /v1/earnings. Testaj ŝlosiloj vidas ekzemplajn ofertojn. Realaj ofertoj bezonas kontrolon de TimTim.Live. Rekta kongruigo de kartpagoj bezonas interkonsenton kun kartreto aŭ banko, kaj ne estas konektita.

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

@ info: tooltip

La stato estas planita, prokrastita, repondita, nuligita, repropondita aŭ kompletigita. La uzebleco estas havebla, limigita, retrinkante, ne_on aŭ finon. Kiam evento estas nuligita, prenu ĝin.

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

Kiom rapide vi povas demandi

Testaj klavoj: 60 mendoj por minuto. Vivu klavoj: 120 minuton. Iri pli rapide ricevas 49- respondon kun denove-a horo, la nombro de sekundoj por atendi.

Kiujn eventojn vi ricevas

Eventoj kiujn organizantoj de TimTim.Live kreas kaj elektas kunhavigi. Eventoj kiujn ni importis el aliaj biletretejoj neniam estas inkluzivitaj, ĉar ni ne havas la rajton kunhavigi ilin.

Kion ni neniam sendas

Salutnomoj, retpoŝtadresoj, hejmadresoj, telefonoj kaj karto-informoj. La pernuja interkomunikas informojn, ne niajn membrojn.

Retpaĝaro- fenestraĵoName

Unu linio de HTML- montras eventojn en iu ajn retejo. Uzi TTT- ŝlosilon (tpli_li) kaj aldoni vian retejon al la permesita listo de la ŝlosilo. Sen ŝlosilo ĝi montras specimenojn.

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

Agordoj: da datumoj, datumritaj, datumoj, malsekigeblaj, datumlimoj (11024), datumresio=true", datumaj datumoj kaj datumoj.

OAununt 2. 0 (Konsperimetaj integriĝoj)

Nedeviga. Faru OA- klienton sur via panelo. Komerco de la kliento kaj sekreto por aliro al ĵetono, kiu daŭras unu horon. Sendu tiun ĵetonon anstataŭ ŝlosilon. La sekreto neniam vojaĝas kun viaj API-vokoj, kaj vi povas peti malpli da ampleksoj ol la kliento havas.

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

Je fino de ĵetono, POST ĝis /v1/uo/ Erevke kun la sama kliento kaj sekreta. Malŝaltu la klienton dum viaj paneloj tuj de ĉiuj ĝiaj ĵetonoj.

Ŝlosu ŝlosilon al viaj serviloj

Nedeviga. Sur via panelo, trovu servilon, testŝlosilon aŭ OAthu-klienton. Malfermu "haltu al miaj serviloj" kaj listigu viajn publikajn adresojn. Telefonu al ĵetonoj kaj ĵetonoj postulas de ie ajn alie oni rifuzis kun ip_ti, eĉ kun la dekstra ŝlosilo.

Do not translate the keyword between brackets (e. g. ServerName, ServerAdmin, etc.) Tiam nomu https://apinim. Ni respondas nur la servilo kiu entenas tiun atestilon.

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

Comment

Ĉu vi uzas WordPress? Instalu TimTim.Live Events: bloko kaj mallongigkodo kiuj montras eventojn kun viaj propraj bileteligiloj de TimTim.Live. Ĝin faris TimTim.Live, ĝi parolas nur kun timtim.live, kaj ĝisdatiĝas nur de timtim.live.

Alŝutu la dosieron en Kromprogramoj → Aldoni novan → Alŝuti kromprogramon. Algluu vian retejan ŝlosilon en Agordoj → TimTim.Live Events kaj premu Testi konekton. Poste aldonu la blokon TimTim.Live Events al iu ajn paĝo.

Elŝuti la vortoprovizon
[timtim_events city="Washington" category="music" limit="6"]

Fluoj

La samaj eventoj kiel JSSR- flu, RSS, XML, CSV aŭ kalendaro (j). @ title: window NAME OF TRANSLATORS Neniam metu servilon en ligilon.

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

RethaokoksComment

@ info: tooltip Retokokcoj estas facence ŝanĝitaj_sicoj donas al vi la samajn informojn.

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

Kontrolu ĉiun mesaĝon: ĝi estas subskribita kun via sekreto. Rifuzis ion pli maljuna ol kvin minutojn, kaj ignoras Tim-Dutor-n, kiun vi jam traktis.

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

Respondu per ajna 2x ene de dek sekundoj. Se ne, ni provos denove post 1 minutoj, 5 minutoj, 2, 6, 12 kaj 24 horoj, do haltu. Ni neniam sekvas alidirektadon.

La testejo

Testaj klavoj prezentas la eventojn markitajn de TESTOGUD NE RALTO MIY. Malfermu aparaton de url', premu la subskeson, tiam petu viajn gajnojn. Faru repagon kaj rigardu ĝin inversigite.

Kiam io difektiĝas

Eraroj klarigas sin en simplaj vortoj, kun titolo kaj kion fari sekve. Ĉiu respondo portas Timo-Timques-I. Sendu ĝin al ni kaj ni povos trovi vian peton.

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

La kontrakto

La plena priskribo de ĉiu kampo, en la OpenAPI formato de viaj iloj povas legi.

Elŝuti openapi.yaml

Kiel vivilaj klavoj estas malfermitaj

Via testa ŝlosilo funkcias tuj. Por realaj ŝlosiloj, homo ĉe TimTim.Live rigardas vian firmaonomon, vian retejon kaj kiel vi montros eventojn. Vi vidas la respondon en via panelo.

Ĝisdatigoj de la TimTim.Live API

Versio 1 nur kreskas. Ni aldonas novajn aferojn. Ni ne forigos aŭ renomis tion, kio jam estas tie.

  • — Evento- respondoj nun portas ETag-on. Sendi ĝin kiel eble plej elektitan decidon por akiri 304 jarojn kiam nenio ŝanĝiĝis. Nedeviga.
  • — Retejoj nun kalkulas ĉiun vizitanton en siaj propraj retejoj, do okupitaj retejoj daŭre funkcias. Neniu ago bezonata.
  • — Do not translate the keyword between brackets (e. g. ServerName, ServerAdmin, etc.) Nedeviga. Neniu ago bezonata.
  • — Amasaj fluoj: Ĉiu evento, kiun vi povas montri, en unu dosiero, ĉe kaplinio /v1/ kbul. Nedeviga. Neniu ago bezonata.
  • — La API havas sian propran adreson: http: // api. glomu.ve/v1. http://tsimima.li/v1 daŭre funkcias. Neniu ago bezonata.
  • — Via propra markon elerka paĝo ĉe timimim.li/ elkontroli ĝin. Nedeviga. Neniu ago bezonata.
  • — Vendu biletojn en via propra aplikaĵo: IV/ unuo/ VEN_BAR_ID/KELL kaj / POST1/rdoj. Nedeviga. Neniu ago bezonata.
  • — @ info: status Neniu ago bezonata.
  • — Do not translate the keyword between brackets (e. g. ServerName, ServerAdmin, etc.) Neniu ago bezonata.
  • — Postkonstruado: add /sub_id= aĉeti ligilon kaj ni sendas ĝin reen al vi kun la vendo. Nedeviga. Neniu ago bezonata.
  • — Kartkartoj ofertas por bankoj kaj rekompencas programojn: devu /v1/ffers. Nedeviga. Neniu ago bezonata.
  • — Kalendara fluo: /v1/ apliks/ k3ts. Name Neniu ago bezonata.
  • — Ŝlosu ŝlosilon por viaj serviloj: IP-oj permesas, kliento (mTL) en apitron. Nedeviga. Neniu ago bezonata.
  • — OAuthu 2 klientajn referencojn por multaj integriĝoj: STO /v1/uto kaj /v1a/uouth/ Erev. @ title: window Neniu ago bezonata.
  • — Vorto dispremu kromprogrameton 1. 0: bloko, mallonga kanto kaj unu agordo. Ĝi daŭras mem de timimim. Neniu ago bezonata.
  • — Retpaĝaro- fenestraĵo, JSON/ RSLSL/CV- fluoj kaj retejoj (unu), ŝanĝantoj, produktantoj. Neniu ago bezonata.
  • — Partnco API v1: eventoj, evento, produktado, kaj provejo. Neniu ago bezonata.