Developers
TermSignals API
A simple REST API to read your contracts, renewal dates, and notice periods. Authenticate with a Bearer API key and pull your data into any system.
Get an API key
- Open Settings - API access (org admins only).
- Name the key and click Create API key.
- Copy the key immediately - it starts with
ts_live_and is shown only once.
Treat the key like a password. You can revoke a key any time from the same screen.
Authentication
Pass your key as a Bearer token on every request. The base URL is https://termsignals.com.
Authorization: Bearer ts_live_xxxxxxxxxxxxxxxxList contracts
GET
/api/v1/contractsReturns your organization's contracts, ordered by renewal date (soonest first).
Query parameters
| Param | Values | Default |
|---|---|---|
| status | active, paid, canceled, all | active |
Example request
curl https://termsignals.com/api/v1/contracts \
-H "Authorization: Bearer ts_live_xxxxxxxxxxxxxxxx"curl "https://termsignals.com/api/v1/contracts?status=all" \
-H "Authorization: Bearer ts_live_xxxxxxxxxxxxxxxx"const res = await fetch("https://termsignals.com/api/v1/contracts", {
headers: { Authorization: `Bearer ${process.env.TERMSIGNALS_API_KEY}` },
});
const { data, count } = await res.json();
console.log(`${count} contracts`, data);Example response
{
"data": [
{
"id": "6f1c...",
"vendor_name": "Globex Software",
"contract_name": "SaaS subscription",
"contract_number": "AC-10293",
"category": "SaaS",
"renewal_date": "2026-09-12",
"notice_period_days": 60,
"estimated_monthly_cost": 640,
"auto_renews": true,
"status": "active",
"tags": ["finance"]
}
],
"count": 1
}Response fields
| Field | Type | Description |
|---|---|---|
| id | string (uuid) | Unique contract identifier |
| vendor_name | string | The counterparty / vendor |
| contract_name | string | Short title of the agreement |
| contract_number | string | null | Your reference / PO number |
| category | string | null | e.g. SaaS, Insurance, Lease |
| renewal_date | string (YYYY-MM-DD) | Next renewal or expiration date |
| notice_period_days | number | Days of notice required to cancel |
| estimated_monthly_cost | number | null | Approximate monthly cost in USD |
| auto_renews | boolean | null | Whether the contract auto-renews |
| status | string | active, paid, or canceled |
| tags | string[] | null | Your labels for the contract |
Errors
Errors return a JSON body of the form { "error": "..." } with the matching HTTP status.
| Status | Message | Cause |
|---|---|---|
| 401 | Missing or invalid API key | No Bearer token, or the key is malformed. |
| 401 | Invalid or revoked API key | The key does not exist or has been revoked. |
| 500 | Could not load contracts | A server error occurred. Retry shortly. |
Notes
- The API is read-only today (listing contracts). Webhooks for push events are available in Settings.
- Responses are scoped to the organization that owns the API key.
- CORS is enabled, so you can call the API from the browser as well as the server.
- Need write access or another endpoint? Tell us what you need.
Ready to connect TermSignals?
Create a key in seconds and pull your contracts into your own dashboards, scripts, or workflows.