Getting started
Errors, pagination & limits
Coming soonError format, cursor pagination, idempotency keys and rate limits.
Planned API. This page describes the design we're building toward and may change before release. Request early access.
Errors
Errors use conventional HTTP status codes and a consistent JSON body.
| Status | Meaning |
|---|---|
| 400 | The request was malformed or failed validation |
| 401 | Missing or invalid API key |
| 403 | The key's scopes or the member's role don't allow this |
| 404 | Not found, or not visible to this key |
| 409 | Conflict, such as an overlapping stay or a second current tenancy |
| 422 | Business rule failed, such as stakes not totalling 100% |
| 429 | Rate limit exceeded |
| 5xx | Something went wrong on our side; safe to retry with the same idempotency key |
Pagination
List endpoints return up to limit items (default 50, max 200) and a next_cursor. Pass it as cursor to get the next page.
Idempotency
Send an Idempotency-Key header (any unique string, such as a UUID) on every POST. Retrying with the same key returns the original result instead of creating a duplicate, which matters for payments.
Rate limits
100 requests per second per workspace, with bursts. Responses include RateLimit-Remaining and RateLimit-Reset headers.
GET
/properties?limit=2Coming soonExample error
Request
curl "https://api.propvara.com/v1/properties?limit=2" \
-H "Authorization: Bearer pv_test_…"Response
{
"error": {
"type": "invalid_request",
"code": "stakes_must_total_100",
"message": "Owner stakes total 99.5%. They must total 100%.",
"param": "owners",
"request_id": "req_8f3a1c"
}
}