Inire

195 Terrae3,400,716 Loca3,004,607+ Paginae Artificum 12,030,638+ Paginae Negotiorum · Praesto in 417+ Linguis

API partus - Initium rapidum

Prima integratio in uno velo concordat.

Probere modo - non clavis, non signatur

Aperi hoc adresum in viso vestro. et videbis exemplare eventum statim.

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

    Vesti clavis

    ingredere et dic nobis quis es et calce Create Test clavis. Incipit ex tt_est_ et tantum specta eventa.

  2. 2

    Revertere eventa

    quaerite eventa in civitate

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

    epistula

    Omne eventum habet nomen et datum, locum, imaginem, pretium et labela parata cardibus tuis.

  4. 4

    Empry_url utitus

    Use em_url damus tibi. Quod est. TimTim.Live atributio in illo link.

  5. 5

    Visor recipitorum

    vide homines missos, tickets vendentes et eficientes in libro tuo aut pete pro eis

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

Status TimTim.Live

Referentia

Ubi petitiones mittere

https://api.timtim.live/v1

Clavis conectationis tui

Mitere clavis tuus in capite Autorisationis. clavis testare (t_test_) vide eventa solum exemplum. clavis website (t_pk_live_) potest sedere in latera web et tantum eventa legendi. clavis serveris (t_sk_live_) mansit in serveris tuis et potet et lucis legere. Clavis semel ostendimus - custodite securi.

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

Filtrae

city
Evenientes in hac civitate.
country
Duo letters code, ut USA.
category
Exemplum musica, festa aut conferentia.
from
Egistientiae in aut post hanc datum (2026-10-20).
to
Eventus in aut ante hanc datum.
changed_since
tantum eventum quae post hoc tempus mutatum sunt.
commissioned
True = tantum eventa quae reddunt mercedem.
minimum_earnings
Solum eventum quod paenitentiam hoc multo per bidget.
near
Locum, ut prope=Paris,FR.
limit
quot eventiones per singula latera, 1 usque 100 (si dimiseritis)

Solum dic quid mutatum est

Servare tempus novissimi tui synchronis et mittere ut mutatum_aud. Hoc tantum eventum quod mutatum est - qualis cancelationes et exhibitiones. Non erat Webhook necesse. Eventi necesse est indicare reverti in abstracto list.

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

Magis quam una pagina

Si responsum aliud habet, revertetur ut cursor= ad adepting Next page. Quod vice vacuum est, habes omnia.

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

Adquiescent

Omne eventus lucritur. si lucro est. falsum est eventus merces non habet, tamen pro spectaculo valet. Si true est, luci.description dicit quid accipitis, ex exemplu "5$ per capitum. Si reddita est pretium reversa est.

Massa pascentia (omquisque in una dato)

Cerare pascum abundatum in libro tuo. Download ergo omne eventum in uno dato conpresso, cum clave serveris tui: GET /v1/bulk/FEED_ID.ndjson.gz aut .csv.gz. Add?changed_sene= pro justo quod mutatum, et eventum destructum. Test clavis potit probare modo; live utilis necesse est a review TimTim.Live.

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

Vendi bidgetes in tua sua app (embeded commercium)

Socii magni custodiunt emptores in propria app. GET /v1/events/EVENT_ID/tickets ad quod vendit, deinde POST /v1/orderes cum emptor electo. Hes link reddere TimTim.Live ut aperiatur emptor; creditum est vendita ad companiam tuam directa. Classis testare potest nunc. Live usus a recensionem TimTim.Live necesse est et emittendi cardibus incidit.

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

Offertae a card-indicatae (bankes et programmae recompensorum)

GET /v1/ offers ostendit omne eventum quod mercedem reddet ut offert. unumquemque offerens habet organis dies emptis pretio locum et mercedem Consuetus tuus activat illud per sectationem tuam et remuneratio redditur multitudini tuo per /v1/earnings. clavis specta valeo. Live offers a recensio TimTim.Live necessaria. Competitionibus cardibus emittendi recte necesse est conventum cum retia cardi aut banka, et non est conecta.

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

Status et biletes

statum planitum est, dimittit, replanificatum, cancelat, sold_out aut completum. tickets.Vailability est, limit, sald_out, non_on_sale aut finis. Quod eventus fuerit cancelatus, declina illud.

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

Quomodo velocius potest petitare

Clavis test: 60 petit un minutum. Vivit clavis: 120 in minuto. Assurgens velocius recepit respons 429 cum Remove-After, numero secundi ad expectandum.

Quod eventus accipis

Eventi quomodo TimTim.Live organizatores creant et elect ut communem. Eventi qui importati sumus ab aliis biletis loci numquam inclusi sunt, quia non habemus potestatem communis eis.

Quod numquam mittimus

Empisor nomina, email adresses, adress domorum, numera telephone et details card. Socius API reddit eventus, non membra nostra.

Wide WebsiteComment

Unus recensus HTML mostrat eventa in omni website. Use clavis website (t_pk_live_) et addere websitem tuam ad listam clavis amisam. Sine clave exhibet eventa exemplum.

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

Optiones: civitatis data, terra data, data-categoria, data-limites (1–24), data-earn="true", data-language et color data.

OAuth 2.0 (integratia magna)

Opcionale. fac clavem OAuth in libro tuo. Tradere ID clanten eius et absconditum ad signum access quod una hora manet. Mise signum pro clavis. absconditum non proficiscet cum vocationibus tuis API, et potestis petitis portus quam cligenti.

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

Ut finis signum de nocte, POST ad /v1/oauth/revoque cum eadem ID et secretum. abstinens clangen in latera tua finis omnes signa eius simul.

clavis ad serveres tuos

Opcionale. In libro tuo invenire clavis serveris, probare clavis vel clavis OAuth. "Aperi in servis meis" et adresas publica servorum tuorum invoca. vocationes — et petitiones signa — unde aliud non adquiescent ip_non accepta, etiam clavis dextris.

Clientio clientis (mTLS), ad companias magnas, da nobis card ID serveris tui (listerium) et pinna illud clavis. tunc voca https://api.tim.vive cum eo. respondimus tantum serveri qui habet iste sertifikatum.

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

Additamentum WordPress

WordPress uti? Installa TimTim.Live Eventiones: a blockus et shortcode qui exhibentur eventa cum tuo TimTim.Live biblioteis. A TimTim.Live, loquitur solum Tim.vive et actualizationes ab Tim.live.

Updatio dato in Plugins → Adde New → Upload Plugin. Insere clavis website tui in Setings → TimTim.Live Eventus et Test Connexion presse. Tunc addidit TimTim.Live eventis blokum ad quodquamque lapium.

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

Faes

Eadem eventum quomodo JSON Feed, RSS, XML, CSV vel calendario (.ics). Calendar Google, Apple Calendar et Outlook potest calendario scribere. Lector nuptio capita non potest mittere, sic posuerit clavis website vel test in ?key=. Chalix serveris non infert in nequis.

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

Webhocks

Addemus ad adressum in dablo tuo et mittimus illam nuntium cum aliquid mutaverit: eventum.changed aut invenium.changes. Webhooks opcionales sunt - mutatum_dus eandem recensum dat tibi.

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

Visa omne nuntium in abscondito tuo signatum est aliquid veteris quinque minutis abicies et praeteris TimTim-Deliberatis Iam fecisti.

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

Responde cum 2xx intra 10 secundo. Si non, probamus iterum 1 minuta, 5 minuta, 30 minuta, et 2, 6, 12 et 24 horae, tunc cito. Nemquam redirecti.

In cellula

clavis testis adveniunt eventa probationis signata EVENT - NE REAL MONE. Aperi em_url, presse Testa Biletum, et postula tibi reddam. Simulare restitutionem et vigilare eam reversum.

Quad aliquid transit mali

errores se explicantur in verbis claris, in titulo et secundum quid facere. omne autem responsum habet TimTim Request-Id mitte ad nos et inveniemus petitionem tuam.

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

In contradictio

Completa descriptio omne agrum, in OpenAPI formato tools tuos potest legere.

Daudes openapi.yml

Quomodo clavis vivis aperiunt

Classis temptationis vestrae operatur statim. Pro live clavis, personam in TimTim.Live aspexit nomen tuum commitatis, team website et quomodo ostendas eventa. Responsum in daemonio tuo vides.

Notedites API TimTim.Live

Versio 1 tantum crescit. Novum addimus. nec quod iam est restamus aut nominamus.

  • — Responses eventus nunc ETag portit. Sed-None-Match ut accipere velut 304 cum nihil mutatum fuerit. Opcionale.
  • — clavis siteis nunc unusquisque visitators habet in propriis, sic occupate sites mant opera. Action non necesse est.
  • — Clientio clavis (mTLS) aperto sunt: pin sertifikatum tuum in clave in libro tuo. Opcionale. Action non necesse est.
  • — Massa cibum: omne eventum quod ostendere potestis, in uno dato, in GET /v1/bulk. Opcionale. Action non necesse est.
  • — Adius API sua est: https://api.tim.live/v1. https://tim.liver/v1 fecerit opera. Action non necesse est.
  • — Tua propria tabula at Tim.live/checkout. Opcionale. Action non necesse est.
  • — Biletes vendi in tua sua app: GET /v1/events/EVENT_ID/tickets et POST /v1/orders. Opcionale. Action non necesse est.
  • — Pagina status publici at /partners/status, quaeretur omne minutum. Action non necesse est.
  • — Mensae statuae ad companias: GET /v1/setings. Action non necesse est.
  • — Postbacks: add ?sub_id= ad link emis et nos reducimus ad vos cum vendita. Opcionale. Action non necesse est.
  • — Offerta card-lincata pro bankas et retribus programmarum: GET /v1/ofers. Opcionale. Action non necesse est.
  • — Calendar feed: /v1/feeds/events.ics pro Google Calendar, Apple Calendar et Outlook. Action non necesse est.
  • — clavis ad serveres tuos: IP permislistens nunc, clavis clavis (mTLS) in api.tim.live. Opcionale. Action non necesse est.
  • — OAuth 2.0 credentiae clientis ad integrationes magnas: POST /v1/oauth/token et /v/oauth/revoke. Clavis custodiunt opera. Action non necesse est.
  • — WordPress Plugin 1.0.0: a block, a shortcode et a page settings. Actualizat se a Tim.live. Action non necesse est.
  • — Widema Website, JSON/RSS/XML/CSV nudificat et webhooks (eventum.changed, ventures.changes). Action non necesse est.
  • — Socius API v1: eventa, unum eventum, venturam et hydriam. Action non necesse est.