Skip to content
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 →