Hasi saioa

195 Herrialde3.400.716 Leku3.004.607+ Artista-orri 11.023.107+ Enpresa-orri · 417+ hizkuntzatan eskuragarri

Partealdeko APIa - Hasiera azkarra

Zure lehen integrazioa pantaila bakar batean sartzen da.

Saiatu orain: giltzarik ez, zeinurik ez

Ireki helbidea arakatzailean. Berehala ikusiko dituzu laginak.

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

    Lortu proba-tekla bat

    Sinatu barruan, esan nor zaren, eta sakatu Sortu proba-gakoa. Tt_test_(r)ekin hasten da eta laginaren gertaerak bakarrik ikusten ditu.

  2. 2

    Bilatu gertaerak

    Galdetu zer gertatzen den hiri batean.

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

    Bistaratu gertaera

    Gertaera bakoitzak zure txartelaren izena, data, lekua, irudia, prezioa eta beharrezko etiketak ditu.

  4. 4

    Erabili _lokala

    Erabili guk emandako buy_url. Kito. TimTim.Live-k esteka horren barruan kudeatzen du jatorria.

  5. 5

    Ikusi emaitzak

    Bidaliak ikusi, txartelak saldu eta irabaziak irabazi, edo eskatu.

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

TimTim.Live egoera

Erreferentzia

Eskaerak non bidali

https://api.timtim.live/v1

Zure konexio gakoa

Baimenaren goiburuan zure gakoa bidali. Proba-teklak (tt_test_) ikusi adibide-gertaerak soilik. Webeko gakoak (tt_pk_live_) web-orri batean eseri eta gertaerak bakarrik irakurri daitezke. Zerbitzari-gakoak (tt_sk_live_) gelditu zerbitzarian eta irabaziak ere irakur daitezke. Giltza bat behin erakusten dugu. Kontuz ibili.

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

Iragazkiak

city
Hiri honetako gertaerak.
country
Bi hizkitako herrialde-kodea, adibidez, AEB.
category
Adibidez, musika, festa edo konferentzia.
from
Data honen ondoren edo ondoren gertatuko diren gertaerak (2026-10-20).
to
Data honen aurreko edo lehenagoko gertaerak.
changed_since
Aldi honen ostean aldatzen diren gertaerak bakarrik.
commissioned
egia = sari bat ordaintzen duten gertaerak bakarrik.
minimum_earnings
Txartel bakoitzeko hau ordaintzen duten gertaerak bakarrik.
near
Leku bat, adibidez,=Paris, FR.
limit
Zenbat gertaera orrialdeko, 1etik 100era (20ra kanpoan uzten baduzu).

Soilik esan zer aldatu den.

Gorde zure azken sinkronizazioaren ordua eta bidali aldaketa-data gisa. Aldaketaren gertaerak bakarrik jasotzen dituzu - bertan behera uztea eta saltzearenak barne. Webhook-ek ez zuen behar. Gertaerak ez dira agertu behar... baztertutako zerrendan.

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

Orrialde bat baino gehiago

Erantzuna aurkitzen badu, bidali atzera kurtsore gisa= hurrengo orrialdera. Hurrengoa hutsik dagoenean, dena daukazu.

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

Earting

Gertaera bakoitzak irabazi du. Irabazgarria faltsua bada, gertakariak ez du saririk, merezi du erakustea. Egia bada, irabazi. Erosketa gainditzen bada, saria alderantziz jartzen da.

Iturri handiak (fitxategi bateko guztiak)

Gorde elikadura handi bat zure aginte-ontzian. Gero deskargatututako fitxategi batean azaltzen den gertaera bakoitza zure zerbitzari-gakoarekin: GET /v1/bulk/FEED_ID.ndjson.gz edo .csv.gz. Gehitu "?rd_funcity=" (aldatutakoa bakarrik), gertaerak barne. Proba-teklak orain saia daitezke; zuzeneko aukerak TimTim.Liveko kritika behar du.

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

Zure aplikazioko txartelak saldu (merkataritza kapsulatua)

Kide handiek erosleak beren app-an eduki ditzakete. Galdetu GET /v1/events/EVENT_ID/ticket-ei saltzen ari denaren truke, gero POST /v1 /w1/ordenak eroslearen aukerarekin. Eroslearentzat TimTim.Liveeko ordainketa-esteka bat jasotzen duzu; salmenta zuzenean zure enpresarentzat da. Proba-teklak saia daitezke orain. Bizitzak TimTim.Liveko kritika bat behar du eta ordainketak aktibatuta daude.

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

Karta-estekadun eskaintzak (bankak eta sari-programak)

GET /v1/offers-ek eskaintza gisa saria ordaintzen duten gertaera bakoitza erakusten du. Eskaintza bakoitzak antolatzailea du, eros ditzakezun datak, prezioa, lekua eta saria. Zure bezeroak zure jarraipen loturaren bidez aktibatzen du, eta zure enpresari ordaintzen zaio saria /v1/earings bidez. Proba-teklek adibide bat ikusten dute. Zuzeneko eskaintzak TimTim.Liveeko kritika behar dute. Parekatze-txartelen ordainketak zuzenean bat datoz sare edo banku batekin, eta ez dago konektatuta.

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

Gertaeraren egoeraren eta sarrerako sarrerak

egoera planifikatuta, atzeratua, ezeztatua, ezeztatuta, saldua edo burutua. Ahalgarritasuna erabilgarri, mugatua, saldua, ez_on_sale edo amaituta dago. Gertaera bat bertan behera uzten denean, kendu ezazu.

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

Zenbateko abiadura eska dezakezu?

Proba-teklak: 60 eskaera minutuko. Zuzeneko teklak: 120 minutu. 429 erantzun bat lortuko dugu, itxaron beharreko segundo kopuruarekin.

Zein gertaera eskuratuko dituzun

TimTim.Live-ko antolatzaileek sortu eta partekatzea aukeratzen dituzten ekitaldiak. Beste sarrera-webguneetatik inportatutako ekitaldiak ez dira inoiz sartzen, ez baitugu haiek partekatzeko eskubiderik.

Ez dugu inoiz bidaltzen

Erosi izenak, helbide elektronikoak, etxeko helbideak, telefono-zenbakiak eta karten xehetasunak. Aldeko APIek gertaeren informazioa partekatzen dute, ez gure kideak.

Web gunearen trepeta

HTML lerro batek edozein web gunetan erakusten ditu gertaerak. Erabili webgunearen tekla bat (t_pk_live_) eta gehitu zure webgunea tekla-zerrendan. Gakorik gabe, lagin-gertaerak erakusten ditu.

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

Aukerak: datuen herria, datuen herrialdea, data-kategoria, datu-muga (1 - 24), datuak-earn="true", data-lang eta data-kolorea.

OAuth 2.0 (integrazio handiak)

Aukerazkoa. Egin OAuth bezero bat zure aginte-panelean. Tratatu bere bezeroaren IDa eta sekretua ordubete irauten duen sarrera-token baterako. Bidali token hori gako baten ordez. Sekretuak ez du inoiz API deiekin bidaiatzen, eta bezeroak dituen baino esparru gutxiago eska ditzakezu.

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

Elementu bat garaiz amaitzeko, /v1/oauth/rebokatu bezero ID eta ezkutukoarekin. Bezeroa aginte-panelean uzteak bere token guztiak batera amaitzen ditu.

Blokeatu tekla bat zure zerbitzarientzako

Aukerazkoa. Zure aginte-panelean, bilatu zerbitzari- giltza, proba-gakoa edo OAuth bezeroa. Ireki "Blokeatu nire zerbitzarietara" eta zerrendatu zure zerbitzarien helbide publikoak. Deiak - eta tokena-eskaerak - beste edozein tokitatik ip_not_uned, nahiz eta tekla egokiarekin.

Bezeroaren ziurtagiriak (mTLS), enpresa handientzat: eman zerbitzariaren ID txartela ( ziurtagiri bat) eta eman gako bati. Orduan deitu https://api.timi. Bizi zaitez berarekin. Ziurtagiria daukan zerbitzariari bakarrik erantzuten diogu.

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

Hitzez hitzeko plugina

Erabili 'Hitzasman'? Instalatu TimTim.Live gertaerak: bloke bat eta kode labur bat gertaerak erakusten dituena zure TimTim.Liveko txartelekin. TimTim.Livek egiten du, timtim.liverekin bakarrik hitz egiten du, eta timim.liverekin soilik eguneratzen du.

Kargatu fitxategia pluginen zerrendan → Kargatu plugin berria. Itsatsi zure webguneko tekla '> TimTim.Live gertaerak' ezarpenetan eta sakatu Proba-konexioa. Gero, gehitu TimTim.Live gertaerak edozein orritan.

Deskargatu Hitza Onste plugin- a
[timtim_events city="Washington" category="music" limit="6"]

Iturriak

JSON iturri, RSS, XML, CSV edo egutegiko fitxategi baten (.ics) gertaera berak. Google egutegiak, Apple egutegiak eta Outlook-ek egutegian harpidetu ahal izatea. Jarioen irakurleek ezin dituzte goiburuak bidali, beraz, jarri webguneko tekla bat edo proba-tekla bat ?key=. Inoiz ez jarri zerbitzari baten gakoa esteka batean.

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

Webhook

Gehitu helbide bat zure aginte-panelean, eta mezu bat bidaltzen diogu zerbait aldatzen denean. Gertaera aldatu edo irabazi egiten da. Aldaketa aldaketak egiten ditu. Webhook aukerakoak dira - aldatu_ informazio berdina ematen dizutenez gero.

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

Begiratu mezu bakoitza: zure sekretuarekin sinaturik dago. Bost minutu baino zaharragoak diren edozeri uko egin, eta ez ikusi egin Tim Ttim-Ruive-Id bati.

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

Erantzun edozein 2xxxekin 10 segundotan. Bestela, berriro saiatuko gara minutu 1, 5 minutu, 30 minutu eta gero 2, 6, 12 eta 24 ordu. Ez dugu inoiz berbideraketarik jarraitzen.

Sandbox-a

Proba-gakoek TESTENTEA markaturiko gertaera batzuk jasotzen dituzte. Ireki _urla bat, sakatu Erosi tiketa, ondoren eskatu irabaziak. Erreflexu bat egin, eta alderantziz begiratu.

Zerbait gaizki ateratzen denean

Akatsak hitz garbietan azaltzen dira, izenburuarekin eta zer egin ondoren. Erantzun bakoitzak Tim Titm-Requide-Id bat darama. Bidali guri eta zure eskaera aurkituko dugu.

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

Kontratua

Eremu bakoitzaren azalpen osoa, IrekiAPI formatuan tresnak irakur daitezke.

Deskargatu openapi.yaml

Tekla biziak nola irekitzen diren

Zure proba teklak berehala funtzionatzen du. Tekla aktiboentzako, pertsona batek TimTim.Live-en zure enpresaren izena, webgunea, gertaerak nola erakutsiko dituzun begiratzen du. Zure aginte-mahaiko erantzuna ikusten duzu.

TimTim.Live API eguneraketak

1. bertsioa bakarrik hazten da. Gauza berriak gehitzen ditugu. Ez dugu existitzen dena ezabatu edo izenez aldatzen.

  • — Gertaeren erantzunak ETag bat daramate. Bidali berriro "Bat ere ez-Match" bezala 304 azkar bat lortzeko ezer aldatu ez denean. Aukerazkoa.
  • — Bisitari bakoitza bere kasa kontatzen dute, beraz, lan egiten dute guneek. Ez da ekintzarik behar.
  • — Bezeroaren ziurtagiriak (mTLS) irekita daude: orratza egin zure ziurtagiriari aginte-taulako gako baterako. Aukerazkoa. Ez da ekintzarik behar.
  • — Iturri masiboak: Fitxategi bateko gertaera guztiak, GET /v1/bulk-en. Aukerazkoa. Ez da ekintzarik behar.
  • — APIak bere helbidea dauka: https://api.tim.live/v1.http://tim.▁lives/v1 lanean jarraitzen du. Ez da ekintzarik behar.
  • — Zure azterketa-orria Timtim.live/ checkout-en. Aukerazkoa. Ez da ekintzarik behar.
  • — Zure aplikazioen sarrera sarrerak saldu: GET /v1/events/EVENT_ID/tickets eta POST /v1 /ordenak. Aukerazkoa. Ez da ekintzarik behar.
  • — Egoera publikoko orri bat /partners/status, minuturo begiratzen da. Ez da ekintzarik behar.
  • — Enpresak hilabetero: GET /v1/likazioak. Ez da ekintzarik behar.
  • — Postbacks: gehitu ?sub_id= erositako esteka bati, eta salgaiarekin bidaliko dizugu. Aukerazkoa. Ez da ekintzarik behar.
  • — Txartelaren estekarekin banku eta sarien programak eskaintzen dira: GET /v1/offers. Aukerazkoa. Ez da ekintzarik behar.
  • — Egutegi-iturria: /v1/feeds/events.ics Google-ren egutegia, Apple egutegia eta Outlook. Ez da ekintzarik behar.
  • — Zure zerbitzarietako gako bat blokeatu: IP baimendu zerrendak orain, bezero ziurtagiriak (mTLS) api.tim.live. Aukerazkoa. Ez da ekintzarik behar.
  • — OAuth 2.0 bezeroen kredentzialak integrazio handietarako: POST /v1/oauth/token eta /v1/%oauth/errebokatu. Giltzak badabiltza. Ez da ekintzarik behar.
  • — Oniritziak 10.0 plugina: bloke bat, kode labur bat eta ezarpenen orri bat. Bizirik dagoen timtim-etik sortzen da. Ez da ekintzarik behar.
  • — Webgunearen trepeta, JSON/RSS/XML/CSV iturriak eta webhook-ak (event. Aldaketa, irabazia). Ez da ekintzarik behar.
  • — API v1: gertaerak, gertaera bat, irabaziak eta sandbox-a. Ez da ekintzarik behar.