Scouq API Pro
Programmatic access to deal analysis, AI scoring, and portfolio data.
The Scouq API gives Pro tier customers a programmatic surface over the same engine that powers the Scouq web app. Pull deal scores, run AI analysis on a property, and integrate Scouq into your own pipelines, CRMs, or internal dashboards.
API access is included with the Professional plan ($499) and the Lifetime plan ($1,999). The Personal plan and free tier do not include API access. See pricing.
What you can do
Authentication
All endpoints use bearer-token authentication. The token is a Supabase user JWT issued to your account. Pass it on every request in the Authorization header.
Authorization: Bearer YOUR_API_TOKEN
Tokens are scoped to a single user. Do not embed them in client-side code that ships to end users. See Getting started for how to retrieve a token.
Base URL
https://scouq.com/api
All endpoints are served from Vercel Edge Functions. Latency is typically under 300 ms from US regions. There is no separate sandbox host; use a dedicated test account if you need a clean environment.
Rate limits
Rate limits are applied per Supabase user id. The current limits are:
| Endpoint | Limit | Window |
|---|---|---|
POST /api/ai | 30 requests | 10 minutes |
When you exceed a limit the API returns 429 with a Retry-After header. See Rate limits for details.
Error format
Errors return a JSON body with a stable error string. Clients should switch on error, not on the human-readable message.
{
"error": "rate_limited",
"retry_after_seconds": 312
}
| Status | Error code | Meaning |
|---|---|---|
| 400 | invalid_json | Request body was not valid JSON. |
| 400 | model_not_allowed | Requested model is not in the allow list. |
| 400 | messages_required | Missing or empty messages array. |
| 400 | bad_message_shape | A message is missing role or content. |
| 400 | prompt_too_long | Combined message content exceeded the 8,000 character cap. |
| 401 | missing_bearer_token | No Authorization header was sent. |
| 401 | invalid_token | Token did not verify against Supabase. |
| 403 | origin_not_allowed | Request origin is blocked by CORS policy. |
| 405 | method_not_allowed | Endpoint requires a different HTTP method. |
| 429 | rate_limited | Per-user rate limit exceeded. Inspect Retry-After. |
| 500 | server_misconfigured | Server is missing required environment variables. Contact support. |
| 502 | upstream_unreachable | The upstream model provider could not be reached. |
SDKs
Official SDKs are planned for Python and TypeScript. Until then the API is small enough that a thin wrapper around fetch or requests is sufficient. See Examples for reference implementations in four languages.
Versioning and stability
The API is at version 1 (implicit). Breaking changes will be announced in advance via the email on your Scouq account and via the changelog on this site. Additive changes (new fields, new endpoints) can ship at any time and clients should ignore unknown fields.
Support
For docs requests, missing endpoints, or integration questions, use the in-app feature request form, or email the address on the help page. Production incidents should reference your account email and a sample request id.