<!-- contracts.md starter: api-usage-terms. Rate and spend limits on an API, service levels and a credit ladder. Every name, number and date is an example: replace each with what the parties stated, run check_contract, and keep status draft until the person says the agreement is in force. A record of terms, not a contract; not legal advice. -->
# CONTRACTS.md

- format: contracts.md/1
- owner: agent:ticket-triage
- updated: 2026-10-23
- currency: USD

## Classification API usage terms

- id: classification-api-terms
- status: draft
- parties:
  - client: agent:ticket-triage
  - provider: the platform team
- scope: The client agent may call the text classification API to triage support tickets, inside the rate and spend limits below.
- in_scope: classification, triage, batch-jobs
- out_of_scope: resale, model-training, scraping
- needs_approval: new-endpoints, rate-increase
- deliverables:
  - 2027-01-31: first quarterly usage review
- price: 0.002 USD per unit
- unit: one API request
- payment: net 30
<!-- sla_credit reads these targets and the ladder below; send it the measured numbers for a month. -->
- service_levels:
  - uptime: at least 99.9 %
  - p95_latency: at most 800 ms
  - error_rate: at most 0.5 %
- credits:
  - uptime below 99.9: 10 %
  - uptime below 99.5: 25 %
  - uptime below 99.0: 50 %
  - p95_latency above 1500: 10 %
  - cap: 50 %
<!-- rate_limit and daily_requests are count limits; scope_check checks them when you send usage. -->
- limits:
  - rate_limit: 600 requests per minute
  - daily_requests: 200000 requests per day
  - spend_cap: 900 USD per month
  - approval_over: 100 USD
<!-- liability_cap: add the figure the parties stated, if any. Never compute or suggest one. -->
- term: 2026-11-01 to 2027-04-30
- notice: 30 days
- renewal: auto
- dispute: the parties talk first, then follow the path they name here
- notes: a request refused for being over the rate limit is not billed
