
🏠 ঘর
আশা গড়ুন
প্রতিটি পরিবারের কাছে একটি বাসস্থানের সুযোগ নিশ্চিত করতে সাহায্য করুন — OseloHelp.com-এর মাধ্যমে অর্থায়িত, আমাদের ট্যাক্স-মুক্ত অলাভজনক প্রতিষ্ঠান।
Global Music Distribution Coming Soon!
TimTim.Live Developer Preview
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.
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.
| Method | Path | What it does | Key |
|---|---|---|---|
| GET | /v1/events | Find events | yes |
| GET | /v1/demo/events | Sample events, no key | none |
| GET | /v1/demo/events/{id} | One sample event, no key | none |
| GET | /v1/categories | Which categories have events | yes |
| GET | /v1/locations | Which cities have events | yes |
| GET | /v1/demo/categories | Sample categories, no key | none |
| GET | /v1/demo/locations | Sample cities, no key | none |
| POST | /v1/track | Say what a visitor saw and clicked | none |
| GET | /v1/events/{id} | One event | yes |
| GET | /v1/earnings | Your results | yes |
| GET | /v1/bulk/{file} | A custom bulk feed — every event a saved subscription covers, in one gzipped file | yes |
| GET | /v1/events/{id}/tickets | Ticket types you may sell in your own app (embedded commerce) | yes |
| POST | /v1/orders | Hold tickets for your buyer and get TimTim.Live's payment link | yes |
| GET | /v1/orders/{id} | The status of an order your company began | yes |
| GET | /v1/settlements | Your monthly statements (custom settlement) | yes |
| GET | /v1/offers | Card-linked offers (banks and rewards programmes) | yes |
| POST | /v1/oauth/token | Get an access token (OAuth 2.0 client credentials) | none |
| POST | /v1/oauth/revoke | End an access token early (RFC 7009) | none |
| GET | /v1/feeds/{file} | The same events as a feed | yes |
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).
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.
Every event has a status:
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.
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.
Each event has a buy link in tickets.buy_url. Send people there. TimTim.Live runs the checkout, the tickets and the refunds, and the sale is counted for your key. Do not change the link. Want to know which of your pages sent the buyer? Add ?sub_id= with your own click id. It comes back on the earning, the webhook and any postback.
Your results are in GET /v1/earnings.
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.
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 — 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);
});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.
A rate limit is how many questions a key may ask in one minute.
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.
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.
Learn how TimTim.Live distribution partnerships work.
Partner Program →আমাদের উদ্দেশ্য
আমরা সবাইকে মানবতার জন্য একটি উত্তরাধিকার রেখে যেতে সহায়তা করার আমন্ত্রণ জানাই।
আমাদের সবার চেয়েও দীর্ঘস্থায়ী তিনটি মিশনে যোগ দিন

আশা গড়ুন
প্রতিটি পরিবারের কাছে একটি বাসস্থানের সুযোগ নিশ্চিত করতে সাহায্য করুন — OseloHelp.com-এর মাধ্যমে অর্থায়িত, আমাদের ট্যাক্স-মুক্ত অলাভজনক প্রতিষ্ঠান।

সঙ্গীতের মাধ্যমে মানবতা সংরক্ষণ করুন
পরবর্তী 1,000+ বছরের জন্য মানবতার সঙ্গীত ও গল্প সংরক্ষণ করুন।

পরবর্তী প্রজন্মের অভিযাত্রীদের অনুপ্রাণিত করুন
মহাকাশ অন্বেষণের সুযোগ সবার জন্য উন্মুক্ত করুন।

রকেটে উৎক্ষেপণের বদলে রানওয়ে থেকে উড়ে যাওয়া একটি স্পেসপ্লেনের নকশা। এটি একটি ধারণা, সম্পূর্ণ যান নয়।
দেখুন এটি কীভাবে কাজ করেএগুলো কিভাবে সংযুক্ত
এখানে কিছুই আলাদা ব্যবসা নয় — প্রতিটি ধাপ পরবর্তী ধাপকে শক্তিশালী করে।
এক উদ্দেশ্য। বহু পরস্পরকে শক্তিশালী করে এমন ব্যবসা।
আপনি গান শুনুন, গল্প শেয়ার করুন, পণ্য পরিধান করুন, কনসার্টে যোগ দিন, গানের লিরিক্স অনুবাদ করুন, কোনো দেশ সুপারিশ করুন, বা কেবল একজন বন্ধুকে বলুন — আপনি এমন এক কাজের অংশ হয়ে উঠছেন যা প্রজন্মের পর প্রজন্ম ধরে টিকে থাকার উদ্দেশ্যে তৈরি।
সবাই অংশগ্রহণ করতে পারে। কোনো অবদানই ছোট নয়।
TimTim.Live — সঙ্গীতের মাধ্যমে বিশ্বকে ঘুরে দেখুন।
TimTim.Live ইতিমধ্যে সব ১৯৫টি দেশের ২,৩৩,৮৩৯টি স্থান মানচিত্রে এনেছে, এবং মাত্র ১,০০০ জনসংখ্যার জনপদ পর্যন্ত পৌঁছেছে, যার মধ্যে রয়েছে:
২৫৭টি রাজ্য • ১,৬৯০টি প্রদেশ • ৪,৮০৮টি কাউন্টি • ৪১,১৩০টি জেলা • ১৩,৪৭১টি শহর • ১,১৭,৮৯৬টি নগর • ৪০,৯৮৮টি গ্রাম
© 2026 TimTim.Live. সর্বস্বত্ব সংরক্ষিত।