Developers
API + webhook reference.
Pull rent data into your accounting tool, push work orders from your scheduler, or react in real time to events with HMAC-signed webhooks. Anything you can do in the UI, you can do with a key from Settings → Developer.
Base URL
app.aptoria.ai
Auth
Bearer apt_ key
Rate limit
60 / min · 1000 / hr
Webhook events
13 signed kinds
On this page
01
Introduction
02
Human-required actions
03
Authentication
04
Errors & rate limits
05
Endpoints
06
Webhooks
07
Verifying signatures
08
SDKs & examples
09
Support
Get your API key
Start here
Introduction
The Aptoria REST API uses JSON over HTTPS. Base URL: https://app.aptoria.ai. All authenticated endpoints live under /api/* and accept JSON bodies on POST/PATCH.
The same endpoints power the app itself — anything you can do in the UI you can do via the API, subject to the scopes on your API key.
Policy boundary
Human-required actions
API keys and customer thresholds cannot authorize the action classes below for autonomous execution. The API may return a draft or review item, but an authorized person retains the decision and any required external process.
Terminate a lease
Ending a tenancy is a judicial-process decision with statutory notice timing — always yours.
File or advance an eviction
Possession actions require jurisdiction-specific process and must never be automated from an unsupported legal conclusion.
Deny an applicant
FCRA adverse-action rules require human sign-off and proper notice.
Deny an accommodation request
Fair Housing Act — only the landlord may decide, with a documented reason.
Deduct from a security deposit
Deposit deductions run on statutory clocks with itemization duties — always yours.
Serve a rent-increase notice
Notice timing is tiered by tenancy length under state law — served by you, on your decision.
Send a formal collection demand
Formal dunning carries consumer-protection formatting duties — never autonomous.
Pool your data to set rents
Your numbers never feed a shared pricing model. Hardcoded — no setting can switch it on.
Keys & scopes
Authentication
Issue a key from Settings → Developer. Keys start with apt_ and are shown exactly once — store them securely.
Send the key as a Bearer token in the Authorization header on every request:
Each key is scoped (e.g., read:tenants, write:work_orders). A request that hits an endpoint your scopes don't cover returns 403.
Reliability
Errors & rate limits
Errors return JSON with an error field and a 4xx/5xx status:
Defaults: 60 requests/minute per key, 1000/hour. Heavy AI endpoints have tighter per-key quotas (e.g., 10/h for delinquency prioritizer). The Retry-After response header tells you when to retry.
REST
Endpoints
List delinquent rent
Post an expense
List work orders for a unit
Trigger an AI helper
Real-time
Webhooks
Register endpoints under Settings → Developer. Each delivery is a POST with the event payload and a signature header. Thirteen event kinds today:
• rent.paid
• rent.late
• application.submitted
• application.approved
• application.denied
• lease.signed
• lease.terminated
• work_order.created
• work_order.completed
• tenant.added
• tenant.removed
• inspection.completed
• payment_plan.proposed
Example payload
We retry failed deliveries with exponential backoff for ~48 hours. After 10 consecutive failures the endpoint is auto-disabled and the owner gets an email.
Security
Verifying signatures
Every webhook POST includes X-Aptoria-Signature:
t is the unix-second timestamp; v1 is an HMAC-SHA256 of t.body using your endpoint's signing secret. Reject deliveries where the timestamp is more than 5 minutes old (replay protection) or where the HMAC doesn't match.
Copy-paste
SDKs & examples
No official SDK yet — the API is small enough that a thin fetch wrapper handles most use cases. Drop-in helper:
Stuck?
Support
Hit a wall? Email developers@aptoria.ai with the request ID from the response (header X-Request-Id) and we'll dig in. Production issues get same-business-day responses on paid plans.
Generate API key
Contact us