// legal · service level agreement
SLA for paid plans
Uptime commitments, incident response times, service-credit compensation. Clear and short. The higher the plan, the stricter the guarantees.
Uptime guarantees
| Plan | Uptime target | Credit refund on breach |
|---|---|---|
| Free | best effort | none |
| Indie | 99 % | 5 % of monthly fee per 0.1 % |
| Starter | 99.9 % | 10 % of monthly fee per 0.1 % |
| Pro | 99.9 % | 25 % of monthly fee per 0.1 % |
| Business | 99.95 % | 50 % of monthly fee per 0.1 % |
| Enterprise | 99.99 % + custom | negotiated, written SLA |
Uptime is measured per calendar month against https://api.astroway.info/v1/health
returning HTTP 200 within 1 000 ms. Scheduled maintenance (announced ≥ 48 h in
advance via status page) is excluded.
Latency targets
Measured on api.astroway.info/v1/* from a single region, server-side compute
only (excludes client and network). The frozen quarterly report is published on
the status page.
Standard endpoints
Chart, planets, synastry, transits, progressions, ACG, geodetic, solar-return and similar.
| Metric | Target | Current (internal sampling, 2026-05-09) |
|---|---|---|
| p50 | < 100 ms | ~80 ms |
| p95 | < 500 ms | ~280 ms |
| p99 | < 1 s | ~640 ms |
Disclaimer: “Current” numbers are from internal api-calc monitoring sampling. A public production telemetry dashboard is on the roadmap. Note: p99 captures the long-tail extremes, so it’s significantly higher than p50.
Heavy endpoints
Multi-day aggregates: transit-calendar, forecast-calendar, moon-aspects, aspect-timeline, group-synastry, eclipse-analysis.
| Metric | Target | Current (2026-04-15) |
|---|---|---|
| p95 | < 2 s | 1.9 s (moon-aspects, 30d) |
| p99 | < 4 s | 1.9 s |
Rectification
POST /v1/rectification (up to 120 s) and POST /v1/rectification/trutine
(up to 15 s) are long-running by design and not covered by the latency SLA.
They honour the Request-Timeout header up to 180 s.
Rate limits
Soft per-key ceiling enforced by rateLimitMiddleware, returns HTTP 429 with
Retry-After header.
| Plan | Requests / minute | Monthly credit budget |
|---|---|---|
| Free | 10 | 10 000 |
| Indie | 30 | 50 000 |
| Starter | 120 | 200 000 |
| Pro | 400 | 800 000 |
| Business | 1 000 | 3 500 000 |
| Enterprise | custom | unlimited |
Public sandbox (POST /v1/public/chart) is IP-rate-limited at 30 req / hour
with no API key required.
Request identification
Every response carries an X-Request-Id header (UUID). Include it when
reporting incidents — we retain access logs for 30 days and can reproduce
your exact call from the request-id alone.
On HTTP 5xx the body also carries the same identifier:
{ "ok": false, "error": { "code": "INTERNAL_ERROR", "message": "Internal server error", "request_id": "c07b5c55-7637-4add-bd2e-7c7c4deb365f" }}Incident response
| Severity | Definition | Response SLA |
|---|---|---|
| SEV-1 | All requests failing / regional outage | 15 min ack |
| SEV-2 | Single-endpoint failure or > 5 % error rate | 1 h ack |
| SEV-3 | Degraded latency (p95 > 2× target) | same business day |
| SEV-4 | Cosmetic / single-customer issue | next business day |
Report incidents to support@astroway.info with the request-id. For SEV-1
also check the status page.
Versioning & deprecation
- Endpoints are served under
/v1/and remain backwards-compatible within the major version. - Breaking changes ship as
/v2/and keep/v1/running for ≥ 12 months. - Field additions are non-breaking; clients must ignore unknown fields.
- Deprecations are announced in the changelog and emailed to account owners ≥ 90 days in advance.
Support channels
| Plan | Channel | Response |
|---|---|---|
| Free | GitHub issues, community forum | best effort |
| Starter | support@astroway.info | ≤ 1 business day |
| Pro | email + priority queue | ≤ 4 business hours |
| Enterprise | dedicated Slack / PagerDuty | per contract |