API Documentation
Start with Developer API v2, managed API keys and the verified integration packages.
Quick Start
Get an API Key
Navigate to the API Keys page and create a new key. If access is unavailable, use the current pricing path shown by the platform.
Set Your Authorization Header
Pass your key as a Bearer token in the Authorization header.
Make Your First Request
Try fetching the latest tenders. See code examples below.
SDKs & Libraries
Verified packages are available for TypeScript, Python, and CLI, with resource clients for the current Developer API v2 surface.
TypeScript / JavaScript
@tenders-sa-org/sdk-jsGitHub repo
Python
tendersa-sdkGitHub repo
CLI
@tenders-sa-org/cliGitHub repo
Visit the SDKs & Libraries page for installation guidance and repository links.
Authentication
All API requests require authentication via a Bearer token in the Authorization header.
curl -X GET "https://api.tenders-sa.org/v2/tenders?limit=10" \
-H "Authorization: Bearer tsa_prod_YOUR_API_KEY" \
-H "Content-Type: application/json"Rate Limits
Check the response metadata and developer dashboard for the current limit and reset window.
Base URL
https://api.tenders-sa.org/v2
Endpoints
Click on any endpoint to view its parameters and details.
Code Examples
curl -X GET "https://api.tenders-sa.org/v2/tenders?limit=10" \
-H "Authorization: Bearer tsa_prod_YOUR_API_KEY" \
-H "Content-Type: application/json"Response Format
All API responses follow a consistent envelope structure:
{
"success": true,
"data": { ... },
"meta": {
"requestId": "uuid",
"timestamp": "2026-01-15T10:30:00Z",
"page": 1,
"limit": 20,
"totalCount": 142
}
}Success
success: true
Errors
success: false, error: "message"
Pagination
Included in meta when applicable
Error Codes
| Status | Code | Description |
|---|---|---|
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | Insufficient permissions for this resource |
| 429 | RATE_LIMITED | Rate limit exceeded. Check Retry-After header. |
| 409 | KEY_LIMIT_REACHED | Maximum number of active keys reached for your plan |
| 500 | INTERNAL_ERROR | Server error. Contact support if persistent. |