وثائق المطوّرين مكتوبة بالإنجليزية.
Taseli API
Read a business's ads as Taseli runs them, and get an event when something waits or changes.
| Base URL | https://taseli.co.il/api/v1 |
| Format | JSON over HTTPS. Dates in ISO 8601, money in the account's currency. |
| Auth | Authorization: Bearer <key> |
| Spec | OpenAPI 3.1: import it into Postman, Insomnia or a client generator. |
What it's for
| You want to | Use |
|---|---|
| Pull daily numbers into a dashboard | GET /accounts/{id}/metrics |
| Tell a CRM or Slack that a decision waits | Webhook proposal.created |
| Keep a record of what Taseli changed | GET /proposals with status=done, and GET /activity |
| Rank creatives by their own results | GET /creatives |
| Work from an AI agent | MCP server at https://mcp.taseli.co.il/mcp, not this API |
The API reads. It never changes an ad account and never approves. Every change is a proposal the owner approves in Taseli; each proposal's approvalUrl is the link. The only things you can write are your own webhooks.
Quickstart
1. Create a key
In Taseli: Settings › AI agents. Copy the key when it's shown; it starts with tsl_. Keep it on your server, in an environment variable.
export TASELI_KEY="tsl_..."2. Make a request
curl https://taseli.co.il/api/v1/workspace \
-H "Authorization: Bearer $TASELI_KEY"const res = await fetch("https://taseli.co.il/api/v1/workspace", {
headers: { Authorization: `Bearer ${process.env.TASELI_KEY}` },
});
const { data } = await res.json();{
"data": {
"id": "0b6f3c1e-7a42-4c55-9b1d-2f6e8a1c4d90",
"name": "Dan Plumbing",
"slug": "dan-plumbing",
"currency": "ILS",
"plan": "pro",
"accounts": 2
}
}3. See what waits for the owner
curl "https://taseli.co.il/api/v1/proposals?status=waiting&language=en" \
-H "Authorization: Bearer $TASELI_KEY"Most valuable first. Show title, why and monthlyValue, and link to approvalUrl.
4. Get told instead of asking
Register a URL and Taseli posts signed events to it. See Webhooks.
curl -X POST https://taseli.co.il/api/v1/webhooks \
-H "Authorization: Bearer $TASELI_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://crm.example.com/hooks/taseli","events":["proposal.created"],"language":"en"}'const res = await fetch("https://taseli.co.il/api/v1/webhooks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TASELI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://crm.example.com/hooks/taseli",
events: ["proposal.created"],
language: "en",
}),
});
const { data } = await res.json();
// Store data.secret now. It isn't shown again.No test mode
There's no sandbox. Reads change nothing and the only writes are your own webhooks, so a real key is safe to try. Create a read-only key if reading is all you need.