195 Países3.400.716 Lugares3.022.009+ Páxinas de artistas 13.577.979+ Páxinas de negocios · Dispoñible en 417+ Idiomas

Inicio rápido da API con parella

A súa primeira integración encaixa nunha única pantalla.

Probe agora sen chave, sen asinar

Abrir este enderezo no navegador. Verás os eventos de mostra inmediatamente.

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

    Obter unha chave de proba

    Asine, dinos quen es, e prema Crear unha chave de proba. Comeza por tt_test e só ve eventos de mostra.

  2. 2

    Procurar eventos

    Pedir eventos nunha cidade.

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

    Mostrar o evento

    Todos os eventos teñen un nome, data, lugar, imaxe, prezo e etiquetas feitas para a tarxeta.

  4. 4

    Usar a compra_ url

    Use a compra_ url que lle damos. Iso é. O TimTim.Live manexa intrisión dentro desa ligazón.

  5. 5

    Ver os resultados

    Vexa xente enviada, entradas vendidos e gaña no seu taboleiro, ou pides.

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

Estado de TimTim.Live

Referencia

Onde enviar solicitudes

https://api.timtim.live/v1

A súa chave de conexión

Envía a súa chave no cabezallo de autorización. Comprobar as chaves (t_test_) só vexa eventos de mostra. As teclas web (t_ pk_live_) poden sentar nunha páxina web e só os eventos de lectura. Chaves do servidor (t_ sk_ print_) queden no seu servidor e tamén pode ler ingresos. Mostraremos unha chave unha vez que o mantén a salvo.

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

Filtros

city
Eventos nesta cidade.
country
Código do país de dúas letras, por exemplo.
category
Por exemplo, música, festival ou conferencia.
from
Eventos ou despois desta data (2026- 20).
to
Eventos ou antes desta data.
changed_since
Só os eventos que cambiaron despois desta hora.
commissioned
verdadeiro = só os eventos que pagan unha recompensa.
minimum_earnings
Só os eventos que pagan polo menos este billete por ti.
near
Un lugar, por exemplo, preto de=CR, FR.
limit
Cantos eventos por páxina, 1 a 100 (20 se o deixa).

Só dime que cambiou.

Garda a hora da última sincronización e envíea como se cambiase de novo. Só se alteraron os eventos que cambiaron de novo incluíndo a aceptación e os espectáculos vendidos. Non precisaba ningunha webhook. Os eventos que hai que deixar de mostrar de volta na lista de transferencias.

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

Máis dunha páxina

Se a resposta ten a seguinte, envíea como cursor= para obter a seguinte páxina. Cando o próximo está baleiro, tes todo.

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

EaringCity in Germany

Cada evento gaña. Se gaña, o evento non ten recompensado aínda paga a pena mostrarse. Se é certo, gaña. description di o que recibes, por exemplo "$5 por boleto." Se a compra se recupera, a recompensa volve atrás.

Grandes fontes (en cada ficheiro)

Gardar unha fonte de persoal no seu taboleiro. A continuación, obter todos os eventos que cobre nun ficheiro zip, coa súa chave do servidor: get // v1/ um/ FEEE_ ID.ndjson. gz ou . csv.gz. Engade? change_ dw= para só o que mudou, incluindo eventos. As chaves de proba poden tentar agora; vivir precisa dunha revisión de TimTim.Live.

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

Vende entradas no seu propio programa (mbeded comercio)

Os socios grandes poden manter os compradores na súa propia aplicación. Preguntar a get/v1/events/ EVENT_ ID/ teticks para o que está na venda, entón POST / v1/▁downs coa escolla do comprador. Ten unha ligazón de TimTim.Live para abrir para o comprador; a venda está baseada na súa empresa directamente. As chaves de proba poden tentalo agora. O uso onde vive precisa unha revisión e pagamentos de tarxeta de TimTim.Live.

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

Xestión de tarxetas (banks e programas de recompensas)

Obter / v1/ffers mostra cada evento que paga unha recompensa como oferta. Cada oferta ten o organizador, as datas que se poden mercar, o prezo, o lugar e a recompensa. O seu cliente activa a través da súa ligazón con pista, e a recompensa é paga á súa empresa a través de / v1/reances. As chaves de proba ven que a mostra ofrece. Vive ofrece unha revisión de TimTim.Live. Pagamentos de tarxeta concorda directamente precisa dun acordo cunha rede ou banco, e non está conectado.

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

Estado dos eventos e entradas

O estado está planificado, aniñado, cancelación, vendidos ou completados. As entradas devaibilidade están dispoñíbeis, limitadas, vendidos_ saída, non_ a_ an_ ou rematadas. Cando se cancela un evento, baixa.

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

Canto rápido se lle pode preguntar

Chaves de proba: 60 pide un minuto. Vidas: 120 un minuto. Ir máis rápido recibe unha resposta 429 con intentos de novo despois, o número de segundos a esperar.

Que eventos obter

Os eventos que crean organizadores de TimTim.Live e escolle compartir. Os eventos que nos importamos doutros sitios de boleto nunca se inclúen, porque non temos dereito a as compartir.

O que nunca mandamos

Nome do comprador, enderezos de correo electrónico, enderezos na casa, números de teléfono e detalles da tarxeta. A API compartida comparta información de eventos, non dos nosos membros.

Widget web

Unha liña de HTML mostra os eventos en calquer sitio web. Emprega unha chave web (t_ t_ pk_live_) e engada o seu sitio web á lista de chaves. Sen chave, mostra os eventos 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>

Opcións: data-city, data- homoon, data- balance, data- límite (124), data- retran=" true ," data- lang e cor de datos.

OAuth 2. 0 (Alarge integración)

opcional. Faga un cliente de OAu no seu taboleiro. Cambiou a súa ID do cliente e o segredo para un token de acceso que dura unha hora. Enviar ese token no canto dunha chave. O segredo nunca viaxa coas súas chamadas de API, e pode pedir menos ámbitos que o cliente.

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

Para rematar unha ficha cedo, POSTa en / v1/outh/revke co mesmo identificador do cliente e segredo. Cambia o cliente no taboleiro remata todas as súas pezas dunha vez.

Trancar unha chave aos servidores

opcional. No seu taboleiro, atopa unha chave do servidor, chave de proba ou cliente de OAuth. Abrir "Dock aos meus servidores" e lista os enderezos públicos dos servidores. Chama a kPC e as solicitudes de token de calquer outra parte son rexeitadas con ip_ not allowd, mesmo coa chave correcta.

Certificados do cliente (mTTLS), para compañías grandes: dános a tarxeta ID do seu servidor (un certificado) e préxeo a unha chave. Entón chama a https: //pi.tim, vive con el. Só respondemos ao servidor que contén ese certificado.

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

Extensión de WordPursName

Empregar palabraPries? Instalar os eventos TimTim.Live: un bloque e un código curto que mostra os eventos coas súas propias ligazóns de boleto TimTim.Live. O TimTim.Live, fala só para timim,live, e só as actualizacións de timit, vive.

Envía o ficheiro en engadidos de KCWave Engadir Novo engadido de Envío de novas. Apega a súa chave web na configuración de TimTim.Live eventos e prema Conexión de proba. Logo engada o bloque de TimTim.Live eventos a calquera páxina.

Obter o engadido WordResumer
[timtim_events city="Washington" category="music" limit="6"]

Fontes

Os mesmos eventos que a fonte de JS, RSS, XML, CSV ou un ficheiro de calendario (.cs). Calendario de Google, o calendario de Apple e o Outlook poden subscribirse ao calendario. Os lectores de fontes non poden enviar cabeceiras, así que poña unha chave web ou unha chave de proba? key=. Nunca poño unha chave do servidor nunha ligazón.

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

Webhoeks

Engade un enderezo no seu taboleiro e enviámoslle unha mensaxe cando algo cambia: evento. Mudado ou cobra. Mudado. Os anhoks son opcionais de novo alterados pola web, dalle a mesma información.

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

Comprobar cada mensaxe: asinarase co seu segredo. Rexeita algo máis vello ca cinco minutos, e ignorar un Tim Tim-Delivey-Id que xa se fixeron.

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

Responder con calquera 2x en 10 segundos. Se non, tentamos de novo despois de 1 minuto, 5 minutos, 30 minutos, despois 2, 6, 12 e 24 horas, logo paramos. Nós nunca seguimos nin os insultos.

O borrador de traballo

As chaves de proba son eventos de mostra marcadas con RIST. Abra unha compra_ url, prema en Mercar, entón preguntar polos teus ingresos. Simula un camión e mira como se volve.

Cando algo vai mal.

Os erros explicaranse en palabras simples, cun título e o que facer despois. Cada resposta leva un Tim Tim-Request-Id. Envíalo a nós e podemos atopar o seu pedido.

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

O contrato

A descrición completa de cada campo, no formato OpenAPI pode ler as súas ferramentas.

Obter openapi.yam!

Como as teclas de vida abertas

A súa chave de proba traballa inmediatamente. Para as chaves de vida, unha persoa de TimTim.Live mira o nome da súa empresa, o seu sitio web e como vai mostrar os eventos. Ve a resposta no taboleiro.

Actualizacións da API TimTim.Live

A versión 1 só medra. Engadimos cousas novas. Non eliminamos ou mudemos o que xa está aí.

  • — As respostas dos eventos agora levan unha E tag. Envíao como Se ninguén-conota para ter un 304 rápido cando nada mudou. opcional.
  • — Agora as chaves web contan agora cada visitante por si mesmo, polo que os sitios ocupados seguen traballando. Ningunha acción precisa.
  • — Os certificados do cliente (mTLS) están abertos: pina o seu certificado nunha chave no seu taboleiro. opcional. Ningunha acción precisa.
  • — Grandes fontes: cada evento que se pode mostrar nun ficheiro, en get / v1/ ublk. opcional. Ningunha acción precisa.
  • — A API ten o seu propio enderezo: https: //pi.live/ v1. http: // tramit.live/v1 mantén a traballar. Ningunha acción precisa.
  • — A súa propia páxina marcada en timtim.live/ checkout. opcional. Ningunha acción precisa.
  • — Vende entradas no seu propio programa: get/v1/events/ EVENT_ ID/ ticks e POST / v1/ordes. opcional. Ningunha acción precisa.
  • — Unha páxina de estado público en / partners/ status, marcada cada minuto. Ningunha acción precisa.
  • — Cantidade mensual para as empresas: get/v1/De acordos. Ningunha acción precisa.
  • — Postbacks: addsubid= a unha ligazón comprada e enviámola de volta coa venda. opcional. Ningunha acción precisa.
  • — O xestor de tarxetas ofrece bancos e recompensas: obter / v1/ffers. opcional. Ningunha acción precisa.
  • — Fonte de calendario: // v1/ 2008s/events.cs para Google Calendar, calendario de Apple e Outlook. Ningunha acción precisa.
  • — Trancar unha chave aos servidores: A IP permite listas agora, certificados cliente (mTLS) nunpi. tramim.live. opcional. Ningunha acción precisa.
  • — Asuth 2. 0 Restricións de cliente para grandes integracións: POST // v1/outh/ token e /v1/ oauth/revke. As chaves seguen a traballar. Ningunha acción precisa.
  • — Extensión de WordPurs 1. 0. 0: un bloque, un código curto e unha páxina de configuración. Está a actualizarse de timtim. Ningunha acción precisa.
  • — Widget web, JHS/RS/XML/▁feedss de usuario e webhoks (event. changed, cambio.). Ningunha acción precisa.
  • — API con parella v1: eventos, un evento, gaña, e o borrador de traballo. Ningunha acción precisa.