Timbrica API
Run Timbrica tools from your own code or from an AI agent. Every call is paid from a prepaid token balance, priced up-front, and never charged unless a result was delivered.
Base URL: https://tembrica.com
A human creates the key: sign in, open Settings → API, mint a key and hand it to your agent. The secret is shown once and cannot be recovered — if it leaks, revoke it and mint a new one.
Quick start
Discovery needs no key, so you can see the catalogue and prices before signing up.
# 1. What can I call?
curl https://tembrica.com/v1/tools
# 2. What will it cost?
curl -X POST https://tembrica.com/v1/tools/dns-lookup/estimate \
-H "Authorization: Bearer $TIMBRICA_KEY" \
-H "Content-Type: application/json" \
-d '{"input":{"name":"example.com"}}'
# 3. Run it
curl -X POST https://tembrica.com/v1/tools/dns-lookup/runs \
-H "Authorization: Bearer $TIMBRICA_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"input":{"name":"example.com","type":"A"}}'
Idempotency-Key.
A retried call then returns the original run instead of charging twice. Networks fail; agents retry.
Reusing a key with a different body is a conflict (409), not a silent second answer.Lanes
A tool declares which lanes it offers. Pass "lane" in the request,
or leave it out and get auto — the cheapest lane available.
| Lane | Who does the work | Why it costs what it costs |
|---|---|---|
browser | Your own browser or agent | Compute is yours, so we only charge for the page and its assets — a token or three.
The run answers 202 with a work order: open the URL,
follow the recipe, and the run settles by itself when the tool hands over a file. |
server | Our CPU | Priced per job, per character or per megabyte, with a floor.
Long jobs answer 202 queued — poll
poll_url or configure a webhook. |
Rate limits follow the lane
The two lanes cost us completely different things, so they are limited completely differently. A browser run happens on your machine; a server run occupies a worker in the same pool that renders pages for people reading the site.
| Lane | Concurrent runs per key | Runs / minute |
|---|---|---|
browser | 16 | 120 |
server | 2 (×2 on a paid plan) | 20 |
There is also a ceiling of
12 server-lane runs across
all keys at once. Hitting it returns 429 concurrency_limited
with "scope":"global" — that one is not about you, and a short retry
clears it. Browser-lane runs are never affected by it.
GET /v1/account reports the exact numbers in force for your key. Files
Media tools take a staged file. Upload bytes, or hand us a URL and we fetch it — useful when a model has a link but not the file.
# upload bytes...
curl -X POST https://tembrica.com/v1/uploads \
-H "Authorization: Bearer $TIMBRICA_KEY" \
-F "file=@song.mp3"
# ...or hand us a URL
curl -X POST https://tembrica.com/v1/uploads \
-H "Authorization: Bearer $TIMBRICA_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/song.mp3"}'
# then reference the returned id
{"input":{"audio":{"file_id":"01J…"}}}
Results come back as a link, not inline — a JSON call should not answer with a hundred megabytes. Both inputs and results expire; collect a result before it does.
MCP
The whole catalogue is available as native tools to any MCP client (Claude, Cursor, and others) with one line of configuration — no SDK, no glue code.
{
"mcpServers": {
"timbrica": {
"url": "https://tembrica.com/mcp",
"headers": { "Authorization": "Bearer $TIMBRICA_KEY" }
}
}
}
Money
Check the balance with GET /v1/balance. Read
spendable_by_lane, not available:
some tokens (welcome grants) do not fund API traffic, so the raw balance can be a true number
about the wrong pool.
An agent cannot top itself up — card authentication needs a human.
POST /v1/billing/topup_link returns a link to hand to the account owner.
Telling us something is wrong
POST /v1/feedback is the channel back, and it is
free — reporting a defect never costs tokens. Our telemetry already records what
happened: every run's status, error, price and timing. What it cannot see is a call that
returned 200 with a wrong answer, a schema that disagrees with
reality, or a tool you need that we do not have.
curl -X POST https://tembrica.com/v1/feedback \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"bug","tool":"ocr","run_id":"01J…",
"message":"Recognised text is empty for a clean 300-dpi scan.",
"expected":"the page text","actual":"empty file"}'
type is one of bug,
tool_request, docs,
other. Everything except type and
message is optional.
run_id whenever you have one.
It links your report to our full server-side record of that call — input shape, price, error,
timing — which turns "it broke" into something reproducible. Our own 5xx bodies carry a
report_url and the request_id to
quote, so an agent can file a report at the moment it hits the bug.Rate limit: 20 per hour per key — the scarce resource behind this endpoint is a person reading it, not CPU. Repeat submissions of the same report collapse into one entry, so a retry loop cannot bury the queue.
Tools
| Slug | What it does | Price |
|---|---|---|
dns-lookup | Resolve DNS records for a domain through Google, Cloudflare or Quad9 DoH. | server · 1 |
ssl-checker | Inspect a host TLS certificate: issuer, validity window, chain and expiry. | server · 1 |
whois-lookup | Look up domain registration data over RDAP. | server · 1 |
ip-lookup | Geolocation, network and ASN data for an IP address or host name. | server · 1 |
redirect-checker | Follow a URL hop by hop and report the whole redirect chain. | server · 1 |
cookie-checker | List the cookies a page sets, with their flags. | server · 1 |
profanity-check | Detect and mask profanity, slurs and abusive language in a text. | server · 1 |
currency-rates | Latest exchange rates for a base currency. | server · 1 |
qr-code | Generate a QR code and download it as PNG or SVG. | browser · 1 |
audio-trim | Trim an audio file to a time range, with optional fades and re-encoding. | server · 5 |
music-mastering | Master a track to a streaming-ready loudness target. | browser · 3 |
heic-convert | Convert HEIC/HEIF photos to JPG, PNG or WebP. | browser · 3 |
pdf-compress | Shrink a PDF by re-encoding the images inside it. | browser · 3 |
ocr | Read text out of a scanned image or PDF. | browser · 10 |
video-compress | Re-encode a video to a smaller file. | browser · 3 |
photo-resize | Resize one photo into every size a set of platforms wants. | browser · 1 |
barcode | Generate a retail, logistics or 2D barcode as PNG or SVG. | browser · 1 |