Global Distribution Live: Submit Your Song or Video

Trang chủNgheKhám phá
TimTim.Live của tôi
Đăng nhập

3.004.607+ Trang nghệ sĩ · 9.444.212+ Trang doanh nghiệp

Cờ của tất cả 195 quốc gia

TimTim.Live Developer Preview

API Reference

An API is a door your program knocks on to ask TimTim.Live a question. Ask "events in Miami?" and it answers with a list, in a format called JSON. The address is https://api.timtim.live/v1. This page is read from the contract itself — TimTim.Live Partner API, version 1.0.0.

Authentication

Every question carries your key, so TimTim.Live knows who is asking. Send it in the Authorization header: Bearer tt_….

  • tt_test_…

    Sandbox. Sample events only. Free, made on the dashboard.

  • tt_pk_live_…

    Website key. Safe in a web page. Locked to your domains.

  • tt_sk_live_…

    Secret key. Server only. Never put it in a page or an app.

No key at all? GET /v1/demo/events answers anyone with sample events. Big companies can swap a name and password for a one-hour pass instead (OAuth, how). Most people do not need it.

Endpoints

MethodPathWhat it doesKey
GET/v1/eventsFind eventsyes
GET/v1/demo/eventsSample events, no keynone
GET/v1/demo/events/{id}One sample event, no keynone
GET/v1/categoriesWhich categories have eventsyes
GET/v1/locationsWhich cities have eventsyes
GET/v1/demo/categoriesSample categories, no keynone
GET/v1/demo/locationsSample cities, no keynone
POST/v1/trackSay what a visitor saw and clickednone
GET/v1/events/{id}One eventyes
GET/v1/earningsYour resultsyes
GET/v1/bulk/{file}A custom bulk feed — every event a saved subscription covers, in one gzipped fileyes
GET/v1/events/{id}/ticketsTicket types you may sell in your own app (embedded commerce)yes
POST/v1/ordersHold tickets for your buyer and get TimTim.Live's payment linkyes
GET/v1/orders/{id}The status of an order your company beganyes
GET/v1/settlementsYour monthly statements (custom settlement)yes
GET/v1/offersCard-linked offers (banks and rewards programmes)yes
POST/v1/oauth/tokenGet an access token (OAuth 2.0 client credentials)none
POST/v1/oauth/revokeEnd an access token early (RFC 7009)none
GET/v1/feeds/{file}The same events as a feedyes

Want to press buttons instead of writing code? Import our Postman collection. How.

Each row is one endpoint: 19 in all. Long lists come in pages, as { object: "list", events: […], next }. Send next back as cursor to get the next page (cursor).

Keeping up with changes

Ask GET /v1/events?changed_since=2026-10-06T10:00:00Z to get every event that changed after that time — including ones that ended or were cancelled. The answer also has a withdrawn list: events you may no longer show. Remove those ids. Or skip polling and use webhooks.

Status and availability

Every event has a status:

  • scheduled
  • postponed
  • rescheduled
  • cancelled
  • sold_out
  • completed

and tickets.availability: available, limited, sold_out, not_on_sale or ended. Hide the ticket button when it is sold_out or ended. See it happen.

Which events you get

Only events their organizers sell on TimTim.Live, that are published and public, and whose organizers left partner sharing on. Each event says so in can_share. Test keys get sample events only.

Webhooks

A webhook is a message TimTim.Live sends to your server when something happens: event.changed, earnings.changed, conversion.postback. Add webhook addresses on the dashboard.

Verify the signature

Each message carries a seal made with a secret only you and TimTim.Live know. Check it before you trust the message. The code below does it. The details: every delivery has TimTim-Signature: t=…,v1=…. v1 is HMAC-SHA256 of t + "." + the raw body with your webhook secret. Refuse it if the time is more than 5 minutes off, and use TimTim-Delivery-Id to ignore repeats.

Node — the same check TimTim.Live's own tests use
// 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);
});

Retries

Reply "got it" (any 2xx code) within 10 seconds. If you do not, we try again after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h, 24 h — 8 tries in all. Test keys' webhooks retry the same way.

Rate limits

A rate limit is how many questions a key may ask in one minute.

  • Test keys: 60 requests a minute.
  • Live keys: 120 a minute (1200 for approved high-volume partners).
  • Website keys count each visitor on their own: 120 a minute per visitor, and up to 6000 a minute for the whole site.

The same question from a website key gets the same answer for 30 seconds. So a busy page is fast, and new events show up within half a minute.

Too many? You get 429 and a Retry-After header in seconds. Wait that long. See a real 429.

Errors

When something goes wrong, the answer says what happened (title) and what to do next (detail). It also has a code and a request_id. Send us the request id and we can find it. Technically it is application/problem+json (error answer). Every error code.

Are you representing a company?

Learn how TimTim.Live distribution partnerships work.

Partner Program →

Mục đích của chúng tôi

Để lại thế giới tốt đẹp hơn lúc ta đến

Chúng tôi mời mọi người cùng để lại một di sản cho nhân loại.

Tham gia ba sứ mệnh sẽ còn mãi sau chúng ta

Mái nhà

🏠 Mái nhà

Xây dựng hy vọng

Giúp mọi gia đình có một nơi để gọi là nhà — được tài trợ qua OseloHelp.com, tổ chức phi lợi nhuận được miễn thuế của chúng tôi.

Ký ức

🎵 Ký ức

Gìn giữ nhân loại qua âm nhạc

Gìn giữ âm nhạc và câu chuyện của nhân loại cho hơn 1.000 năm tới.

Tương lai

🚀 Tương lai

Truyền cảm hứng cho thế hệ nhà thám hiểm tiếp theo

Mang cơ hội khám phá không gian đến với mọi người.

Sơ đồ kỹ thuật của ý tưởng AdMerk Spacecraft

Tàu vũ trụ chúng tôi đang thiết kế

Thiết kế của một máy bay vũ trụ cất cánh từ đường băng thay vì phóng bằng tên lửa. Đây là ý tưởng, chưa phải tàu hoàn chỉnh.

Xem nó hoạt động thế nào

Mọi thứ kết nối thế nào

Bánh đà TimTim.Live

Không có gì ở đây là một doanh nghiệp riêng lẻ — mỗi bước giúp bước sau mạnh hơn.

  1. 🎵Âm nhạc & Nhà sáng tạo
  2. 🌍Cộng đồng toàn cầu
  3. 💰Doanh thu
  4. 🏠Nhà ở vừa túi tiền
  5. 📜Gìn giữ văn hóa
  6. 🚀Công nghệ tương lai
  7. 📖Thêm câu chuyện
  8. 🎶Thêm âm nhạc

Một mục đích. Nhiều doanh nghiệp hỗ trợ lẫn nhau.

  1. 1Âm nhạc tạo nên cộng đồng.
  2. 2Cộng đồng tạo nên niềm tin.
  3. 3Niềm tin hỗ trợ thương mại.
  4. 4Thương mại tài trợ cho các sứ mệnh lâu dài.
  5. 5Các sứ mệnh lâu dài tạo nên những câu chuyện đáng chia sẻ.
  6. 6Những câu chuyện đó thu hút thêm cộng đồng.

Trở thành một phần của di sản

Dù bạn nghe một bài hát, kể một câu chuyện, mặc áo lưu niệm, đi xem hòa nhạc, dịch lời bài hát, giới thiệu một quốc gia hay chỉ đơn giản là kể cho một người bạn — bạn đã trở thành một phần của điều được tạo ra để tồn tại qua nhiều thế hệ.

Ai cũng có thể tham gia. Không đóng góp nào là quá nhỏ.

TimTim.Live — Khám phá thế giới qua âm nhạc.

Kết nối mọi người ở 195 quốc gia, hiện có 3.004.607+ trang nghệ sĩ, mở rộng tới hơn 4 triệu · 9.444.212+ trang doanh nghiệp, mở rộng tới 400 triệu · trang web sẽ được dịch sang 417 ngôn ngữ địa phương trên toàn thế giới.

TimTim.Live đã có bản đồ 233.872 địa điểm ở tất cả 195 quốc gia, đến cả những cộng đồng chỉ có 1.000 người, gồm:

257 bang • 1.690 tỉnh • 4.808 hạt • 41.161 quận huyện • 13.471 thành phố • 117.896 thị trấn • 40.988 làng

© 2026 TimTim.Live. Bảo lưu mọi quyền.