Skip to main content

Command Palette

Search for a command to run...

intermediate15 minutes

Tenders API

Current application routes for tender listing, detail, document download links, and authenticated exports

Overview

The current tender routes are application API routes under the same Tenders-SA web app, not a separate public API-key service. Tender listing and tender detail routes are public read routes. Export routes require the user's logged-in JWT.

Base path

Use the app base URL plus the route path, for example https://tenders-sa.org/api/tenders. The previous https://api.tenders-sa.org/v1/tenders examples are not the current implementation.

List Tenders

GET /api/tenders returns active tender notices by default and supports pagination plus common search filters.

| Parameter | Type | Description |
|-----------|------|-------------|
| page | number | Page number, default 1 |
| limit | number | Items per page, default 20 |
| search | string | Searches title, description, organization, reference number, and parsed data |
| industry | string | Category search filter; use all to skip |
| province | string | Province filter; use all to skip |
| publicationType | string | Publication type filter such as TENDER_NOTICE, CLOSED, AWARD_NOTICE, CANCELLATION_NOTICE, CORRIGENDUM, or another valid publication type |

Search tenders

bash

List response shape

json

Get Single Tender

GET /api/tenders/{id} returns a single active tender by internal tender ID. The route returns 404 if the tender is missing, inactive, or a placeholder/test reference.

Tender detail request

bash

Tender Document Download Links

GET /api/v1/documents/{documentId}/download-url resolves a source tender document URL. It returns the R2 URL when available, otherwise a constructed worker URL, otherwise the original source URL. Add ?redirect=1 to receive a 307 redirect instead of JSON.

Resolve source document URL

bash

Download URL response shape

json

Authenticated Tender Exports

POST /api/tenders/export creates an export for an authenticated user. GET /api/tenders/export/download?exportId={id} downloads the generated file if it belongs to the same user and has not expired. See Authentication for current JWT behavior.

Create export

bash

Error Handling

| Status | Meaning |
|--------|---------|
| 200 | Request succeeded |
| 400 | Invalid request parameters or export request body |
| 401 | Authenticated export route was called without a valid JWT |
| 403 | Export access is not allowed for the current subscription or user |
| 404 | Tender, document URL, or export was not found |
| 410 | Export file has expired |
| 500 | Unexpected server error |

Updates and Integrations

For user-facing tender updates, use Notification Management. For application preparation context, see the Tender Application Guide.