Skip to content

Public API Reference

The public API provides programmatic access to Tendrex for external integrations, reporting tools, and automation. It is separate from the internal session-based API used by the Tendrex web app.

https://app.tendrex.co.uk/api/v1

All requests must include an API key in the Authorization header as a Bearer token. API keys are prefixed with tx_ and created from the Developer tab in the Tendrex app.

Terminal window
curl -H "Authorization: Bearer tx_your-api-key" \
https://app.tendrex.co.uk/api/v1/tenders

Each API key has one of three scope levels. Higher scopes include all lower scope permissions.

ScopeAccess
ReadList and retrieve resources
WriteCreate, update, and delete resources (includes read)
AdminFull access including user invitations and API key management (includes write)

Requests that exceed the key’s scope return 403 Forbidden.

The API is rate limited to 100 requests per minute per key.

MethodEndpointScopeDescription
GET/tendersReadList all tenders
GET/tenders/:idReadGet tender details
POST/tendersWriteCreate a new tender
PUT/tenders/:idWriteUpdate tender metadata
DELETE/tenders/:idWriteDelete a tender
MethodEndpointScopeDescription
GET/tenders/:id/answersReadList answers for a tender
GET/answers/:idReadGet a specific answer
PUT/answers/:idWriteUpdate an answer
POST/answers/:id/approveWriteApprove an answer
POST/answers/:id/rejectWriteReject an answer
POST/answers/:id/assignWriteAssign an answer to a user or team
MethodEndpointScopeDescription
GET/documentsReadList all documents
POST/documentsWriteUpload a new document
GET/documents/:id/chunksReadGet document chunks
DELETE/documents/:idWriteDelete a document
MethodEndpointScopeDescription
POST/rag/queryReadQuery the knowledge base and receive an AI-generated answer with sources
MethodEndpointScopeDescription
GET/libraryReadList approved canonical answers
GET/library/searchReadSemantic search across the library
MethodEndpointScopeDescription
GET/usersReadList users in your organisation
POST/users/inviteAdminInvite a user by email
MethodEndpointScopeDescription
GET/teamsReadList all teams
MethodEndpointScopeDescription
GET/keysAdminList API keys
POST/keysAdminCreate a new API key
DELETE/keys/:idAdminDelete an API key
MethodEndpointScopeDescription
GET/openapi.jsonNoneOpenAPI 3.0 specification for the public API

All errors return a JSON body:

{
"error": "forbidden",
"message": "Insufficient scope for this operation"
}
StatusMeaning
400Bad request — invalid parameters
401Unauthorised — missing or invalid API key
403Forbidden — key does not have the required scope
404Not found — resource does not exist
429Rate limited — too many requests (100/min per key)
500Internal server error