195 Països3.400.716 Llocs3.004.607+ Pàgines d'artistes 11.023.119+ Pàgines de negocis · Disponible en 417+ idiomes

Inici ràpid de l' API de la parella

La seva primera integració encaixa en una pantalla.

Prova-ho ara Manveen no té clau, ni senyal

Obre aquesta adreça al navegador. Veureu els esdeveniments de mostra immediatament.

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

    Obtén una clau de prova

    Signa, digue'ns qui ets i prem Crea una clau de prova. Comença amb tt_test_ i només veu esdeveniments de mostra.

  2. 2

    Cerca esdeveniments

    Demana esdeveniments en una ciutat.

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

    Mostra l' esdeveniment@ info: whatsthis

    Cada esdeveniment té un nom, data, lloc, imatge, preu i etiquetes fetes per a la vostra targeta.

  4. 4

    Usa l' intèrpret_ de compra

    Utilitza el anunci que et donem. Això és tot. TimTim.Live gestiona l'atribució dins d'aquest enllaç.

  5. 5

    Mostra els resultats

    Mireu gent enviada, els bitllets es venen i els guanys del vostre tauler, o demaneu-los.

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

Estat de TimTim.Live

Referència

A on enviar peticions

https://api.timtim.live/v1

La vostra clau de connexió

Envia la vostra clau a la capçalera d' autorització. Prova les tecles (t_test_) només mireu els esdeveniments de mostra. Claus de lloc web (t_ pk_ Live_) es poden asseure en una pàgina web i només llegir esdeveniments. Claus del servidor (t_sk_ Live_) es queden al servidor i també poden llegir guanys. Mostrem una clau una vegada que l'Abtoni el manté fora de perill.

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

Filtres

city
Esdeveniments d'aquesta ciutat.
country
Codi del país de dues lletres, per exemple US.
category
Per exemple, música, festival o conferència.
from
Esdeveniments activats o després d' aquesta data (2026- 10- 20).
to
Esdeveniments activats o abans d' aquesta data.
changed_since
Només els esdeveniments que han canviat després d' aquest moment.
commissioned
veritable = només els esdeveniments que paguen una recompensa.
minimum_earnings
Només els esdeveniments que paguen com a mínim per bitllet.
near
Un lloc, per exemple, prop d'=Paris, FR.
limit
Quants esdeveniments hi ha per pàgina, 1 a 100 (20 si el deixeu anar).

Només digue'm què ha canviat.

Desa l' hora de la vostra última sincronització i envia- la com a canviat. Rebeu només esdeveniments que van canviar la Hampton incloent cancel·lacions i programes venuts. No cal cap desempel web. Esdeveniments que heu de deixar de mostrar tornar a la llista de desplegament.

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

Més d' una pàgina

Si la resposta té la següent, envia- la com a cursor= per obtenir la pàgina següent. Quan el següent estigui buit, ho tindràs tot.

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

Traïment

Cada esdeveniment ha guanyat. Si guanya.eligible és fals, l'esdeveniment no té recompensa, encara val la pena ensenyar-la. Si és cert, la inscripció diu el que s'obté, per exemple "$5 per bitllet de compra." Si la compra es cancel·la, la recompensa es revertirà.

Fonts de massa (tot en un fitxer)

Desa un canal en gran volum al tauler. Després descarrega cada esdeveniment en un fitxer zip, amb la vostra clau del servidor: Executiu / v1/bulk/FED_ID.ndjson.gz o .csv.gz. Afegeix? Canviada_ com a = per a només què ha canviat, incloent els esdeveniments caiguts. Les tecles de prova poden provar- ho ara; l' ús de vida necessita una revisió TimTim.Live.

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

Ven les entrades a la vostra pròpia aplicació (nom de comerç registrat)

Els grans socis poden mantenir compradors a la seva pròpia aplicació. Pregunta open / v1/vents/ EVENT_ID/ trickets per a què està en venda, llavors POST /v1/ orders amb l' elecció del comprador. Tens un enllaç de pagament de TimTim.Live per obrir el comprador; la venda està retribuïda a la seva empresa directament. Les tecles de prova ho poden provar ara. L'ús de la vida necessita una revisió de TimTim.Live i els pagaments de les targetes activats.

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

A més, ofereix ofertes de targetes (per exemple, programes i recompenses)

Execute / v1/offers mostra cada esdeveniment que paga una recompensa com a oferta. Cada oferta té l' organitzador, les dates que podeu comprar, el preu, el lloc i la recompensa. El vostre client l' activa a través del vostre enllaç a la pista, i la recompensa es paga a la vostra empresa a través de /v1/earnings. Les tecles de prova veuen ofertes de mostra. Els ofertes de vida necessiten una revisió de TimTim.Live. Els pagaments de les cartes coincidents necessiten directament un acord amb una xarxa de cartes o un banc, i no està connectat.

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

Estat i bitllets d' esdeveniment

L' estat està planificat, posposat, reprogramat, cancel· lat, venuda o completada. Les entrades estan disponibles, limitats, venuda_ out, no_ on_ esale o acabat. Quan es cancel· la un esdeveniment, baixa-la.

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

Com de ràpid es pot preguntar

Claus de prova: 60 peticions per minut. Tecles vives: 120 per minut. Anar més ràpid té una resposta 429 amb Reintentada després, el nombre de segons a esperar.

Quins esdeveniments s' obtén

Esdeveniments que els organitzadors TimTim.Live creen i escullen compartir. Els esdeveniments que hem importat d'altres pàgines de venda mai s'inclouen, perquè no tenim el dret de compartir-les.

El que mai enviarem

Noms del Buyer, adreces de correu, adreces de casa, números de telèfon i detalls de les targetes. L' API de la parella comparteix informació de l'esdeveniment, no dels nostres membres.

Estri de lloc webComment

Una línia HTML mostra esdeveniments a qualsevol lloc web. Useu una clau web (t_ pk_ Live_) i afegiu el vostre lloc web a la llista permesa de la clau. Amb cap clau es mostra els esdeveniments de mostra.

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

Opcions: data- city, països de dades, categoria de dades, límit de dades (1123424), data- ton="true," data- lang i color de dades.

OAuth 2. 0 (relacionacions grans)

Opcional. Fes un client OAuth al tauler. Venent el seu client ID i secret per a un testimoni d'accés que dura una hora. Envia aquest testimoni enlloc d'una clau. El secret mai no viatja amb les vostres trucades API, i podeu demanar menys llocs que el client té.

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

Per acabar una fitxa d'hora, POST a / v1/oauth/revoke amb el mateix client ID i secret. Canviar el client al tauler acaba totes les seves fitxes alhora.

Bloqueja una clau als vostres servidors

Opcional. Al tauler trobareu una clau del servidor, la tecla de prova o el client OAuth. Obre les adreces públiques dels meus servidors i llista les vostres servidors. Les crides i les peticions de fitxa Manveen i prioritat de qualsevol altre lloc es rebutja ip_ no_ permet, fins i tot amb la clau correcta.

Certificats client (mTLS), per a empreses grans: doneu-nos la targeta ID del vostre servidor (un certificat) i introduïu- lo a una clau. Doncs truca a https://api.timimimim.live. Responem només el servidor que manté aquest certificat.

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

Connector WordPressName

Voleu utilitzar WordPress? Instal· la els esdeveniments TimTim.Live: un bloc i un codi curt que mostra esdeveniments amb els vostres propis enllaços de bitllet TimTim.Live. Està fet per TimTim.Live, només parla a timtim.live, i actualitzacions només des de timti.live.

Publica el fitxer en connectors Manveen Afegeix un connector de càrrega nou KFormula. Name Enganxa la vostra clau web a Arranjament Manveen TimTim.Live Esdeveniments i premeu Prova Connexió. Després afegiu el bloc TimTim.Live d' esdeveniment a qualsevol pàgina.

Descarrega el connector WordPressName
[timtim_events city="Washington" category="music" limit="6"]

Fonts

Els mateixos esdeveniments que JSON▁Feed, RSS, XML, CSV o un fitxer de calendari (.ics). Google Calendar, Apple Calendar i Outlook es poden subscriure al calendari. Els lectors de fonts no poden enviar capçaleres, per tant, posar una clau web o una clau de prova a ? key=. No poseu mai una clau del servidor en un enllaç.

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

Descomunts web

Afegeix una adreça al tauler i l' enviem un missatge quan alguna cosa canvia: esdeveniment.change o guanys.changes. Els descomunats web són opcionals, canviades, ja que us dona la mateixa informació.

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

Comprova cada missatge: està signat amb el teu secret. Si negues alguna cosa més gran de cinc minuts, i ignora un ID TimTim-Delivery ja ho has manegat.

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

Respon amb 2xxx en 10 segons. Si no, tornem a intentar-ho després d'un minut, 5 minuts, 30 minuts, llavors 2, 6, 12 i 24 hores, llavors parem. Mai seguim redireccionats.

La carpeta local

Les tecles de prova reben esdeveniments de mostra marcats TEST ni els diners NO real. Obre un bitllet de proves, premi el Buy i demana els guanys. Simula una cancel· lació i mira com s' ha canviat.

Quan alguna cosa va malament

Hi ha errors que s' expliquen en paraules senzilles, amb títol i què fer després. Cada resposta té un TimTim-Id. Envia'ns-ho i podrem trobar la teva petició.

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

El contracte

La descripció completa de cada camp, en el format OpenAPI que les vostres eines poden llegir.

Descarrega openapi.yaml

Com s' han d' obrir les claus de vida

La teva clau de prova funciona de seguida. Per a claus vives, una persona a TimTim.Live mira el nom de la vostra empresa, el vostre lloc web i com mostrareu esdeveniments. Veus la resposta al tauler.

Actualitzacions API TimTim.Live

La versió 1 només creix. Nosaltres hi afegim coses noves. No podem eliminar o reanomenar el que ja hi ha.

  • — Les respostes d'un esdeveniment ara porten un ETag. Envia-la com si-Cap-Match tingués un 304 ràpid quan res canviés. Opcional.
  • — Les claus del lloc web compten ara cada visitant pel seu compte, així que llocs ocupats segueixen treballant. No hi ha acció necessària.
  • — Els certificats del client (mTLS) estan oberts: introduïu el vostre certificat a una clau del tauler. Opcional. No hi ha acció necessària.
  • — Fonts de massa: cada esdeveniment que podeu mostrar, en un fitxer, a l' afegit / v1/bulk. Opcional. No hi ha acció necessària.
  • — L' API té la seva pròpia adreça: https://api.timimimimli.live/v1. https://tim.Live/v1=1 continua funcionant. No hi ha acció necessària.
  • — La vostra pàgina d' obtenció etiquetada a timtim.live/checkout. Opcional. No hi ha acció necessària.
  • — Ven entrades a la vostra pròpia aplicació: obre / v1/vents/ EVENT_ ID/ tickets i POST / v1_ orders. Opcional. No hi ha acció necessària.
  • — Una pàgina d'estat pública a /partners/estat, comprovada cada minut. No hi ha acció necessària.
  • — Petició mensual per a les empreses: Execucions /v1/ desactualitzacions. No hi ha acció necessària.
  • — Els correus: afegir?sub_i= a un enllaç de compra i enviar-lo de nou a la venda. Opcional. No hi ha acció necessària.
  • — Exemples per als bancs i els programes de recompenses: Execucions / v1/offers. Opcional. No hi ha acció necessària.
  • — Hora de calendari: / v1/ allets/ friqts.ics per Google Calendar, Apple Calendar i Outlook. No hi ha acció necessària.
  • — Bloqueja una clau als vostres servidors: IP permet llistes ara, certificats de clients (mTLS) a l' api. timtim.live. Opcional. No hi ha acció necessària.
  • — OAuth 2. 0 credencials de client per a grans integració: POST / v1/oauth/token i /v1/outh/revoke. Les claus segueixen treballant. No hi ha acció necessària.
  • — Connector WordPress 1. 0. 0: un bloc, un codi curt i una pàgina d' arranjament. S'actualitza des de timtim.live. No hi ha acció necessària.
  • — Estri de lloc web, JSON/RS/XML/CSDMts (inicits.change, guanys.change). No hi ha acció necessària.
  • — API de la parella v1: esdeveniments, un esdeveniment, guanys i la carpeta local. No hi ha acció necessària.