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 catalog 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" }
}
}
}
Connecting from ChatGPT or Claude
Those two do not take a pasted key: they add a remote MCP server through OAuth. Give them the URL and nothing else — they discover the rest, and send you here to sign in and approve:
https://tembrica.com/mcp
You approve once, on a page that names the app asking and the balance it may spend. Every
call it makes afterwards is charged to that balance, the connection is listed in your profile under
Settings → API, and ending it there stops the app immediately. A connector token works only against
/mcp — it cannot be used on the REST surface, which is why approving one
is narrower than handing over a key.
A key in a header remains the way for everything else: your own scripts, an editor, an agent you host. Same catalogue, same wallet, same limits.
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 · 5 |
transcribe | Transcribe speech from an audio or video file into text with timestamps. | server · 17 |
heic-convert | Convert HEIC/HEIF photos to JPG, PNG or WebP. | browser · 5 |
pdf-compress | Shrink a PDF by re-encoding the images inside it. | browser · 5 |
ocr | Read text out of a scanned image or PDF. | browser · 19 |
video-compress | Re-encode a video to a smaller file. | browser · 5 |
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 |