Developer · Read-only v1
The Connect API
A small, honest first version: three read-only JSON endpoints for procurement notices, contract awards, and entity search. REST over HTTPS, authenticated with a bearer key. No write endpoints ship in v1 — reads only.
Authentication
Create a key in Developer settings. It’s shown once — store it securely. Send it on every request:
Authorization: Bearer tc_live_<your key>
A missing or revoked key returns 401. Keys carry your account’s read access.
Rate limits
Default 60 requests per minute, per key, on a fixed one-minute window. Every response carries the current budget:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1755123660 # unix epoch when the window resets
Exceeding the limit returns 429 with the same headers. Retry after the reset.
Response envelope
Every endpoint returns the same shape:
{
"success": true, // false on any error
"data": [ … ] | null, // payload, null on error
"error": null | "…", // human-readable message on error
"meta": { … } // count, limit, query, etc.
}
Status codes: 200 ok · 400 bad request · 401 bad key · 429 rate limited · 503when the API isn’t provisioned on an environment.
Endpoints
GET/api/v1/notices
Recent procurement notices, newest deadline first. Query: limit (1–100, default 25).
Request
curl "https://s7clear.com/api/v1/notices?limit=2" \
-H "Authorization: Bearer tc_live_•••"
Response
{
"success": true,
"data": [
{
"id": "…", "source": "worldbank", "notice_type": "RFP",
"title": "…", "organisation": "…", "country": "NG",
"sector": "…", "value_usd": 1200000, "deadline": "2026-09-01",
"status": "open", "url": "https://…"
}
],
"error": null,
"meta": { "count": 2, "limit": 2 }
}
GET/api/v1/awards
Recent contract awards, newest award date first. Query: limit (1–100, default 25).
Request
curl "https://s7clear.com/api/v1/awards?limit=2" \
-H "Authorization: Bearer tc_live_•••"
Response
{
"success": true,
"data": [
{
"id": "…", "source": "iadb", "buyer": "…", "country": "BR",
"supplier": "…", "value_usd": 840000, "bidder_count": 3,
"awarded_at": "2026-07-14", "url": "https://…"
}
],
"error": null,
"meta": { "count": 2, "limit": 2 }
}
GET/api/v1/entities/search
Resolve a supplier/entity by name. Query: q (required, ≥ 2 chars). Same resolver as the app.
Request
curl "https://s7clear.com/api/v1/entities/search?q=siemens" \
-H "Authorization: Bearer tc_live_•••"
Response
{
"success": true,
"data": [
{ "key": "siemens-ag", "name": "Siemens AG", "awards": 42, "usd": 91000000 }
],
"error": null,
"meta": { "count": 1, "query": "siemens" }
}
This is v1. Write access, webhooks, and richer filters are not part of it yet — we’d rather ship a small honest surface than over-promise. Tell us what you need →