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

  1. Open Settings - API access (org admins only).
  2. Name the key and click Create API key.
  3. 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_xxxxxxxxxxxxxxxx

List contracts

GET/api/v1/contracts

Returns your organization's contracts, ordered by renewal date (soonest first).

Query parameters

ParamValuesDefault
statusactive, paid, canceled, allactive

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

FieldTypeDescription
idstring (uuid)Unique contract identifier
vendor_namestringThe counterparty / vendor
contract_namestringShort title of the agreement
contract_numberstring | nullYour reference / PO number
categorystring | nulle.g. SaaS, Insurance, Lease
renewal_datestring (YYYY-MM-DD)Next renewal or expiration date
notice_period_daysnumberDays of notice required to cancel
estimated_monthly_costnumber | nullApproximate monthly cost in USD
auto_renewsboolean | nullWhether the contract auto-renews
statusstringactive, paid, or canceled
tagsstring[] | nullYour labels for the contract

Errors

Errors return a JSON body of the form { "error": "..." } with the matching HTTP status.

StatusMessageCause
401Missing or invalid API keyNo Bearer token, or the key is malformed.
401Invalid or revoked API keyThe key does not exist or has been revoked.
500Could not load contractsA 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.