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
Canonical BLOCKED floor
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
Canonical BLOCKED floor
Registry version 2026-09-06.1. API keys, approvals and customer thresholds cannot enable prohibited actions. Human review requirements do not activate a workflow. Unreviewed applicability remains unavailable.
Terminate a lease
Ending a tenancy is a judicial-process decision with statutory notice timing — always yours.
Human review required
Maximum maturity: approval_only
Legal activation: unreviewed
File or advance an eviction
Possession actions require jurisdiction-specific process and must never be automated from an unsupported legal conclusion.
Human review required
Maximum maturity: approval_only
Legal activation: unreviewed
Deny an applicant
FCRA adverse-action rules require human sign-off and proper notice.
Human review required
Maximum maturity: approval_only
Legal activation: unreviewed
Deny an accommodation request
Fair Housing Act — only the landlord may decide, with a documented reason.
Human review required
Maximum maturity: approval_only
Legal activation: unreviewed
Deduct from a security deposit
Deposit deductions run on statutory clocks with itemization duties — always yours.
Human review required
Maximum maturity: approval_only
Legal activation: unreviewed
Serve a rent-increase notice
Notice timing is tiered by tenancy length under state law — served by you, on your decision.
Human review required
Maximum maturity: approval_only
Legal activation: unreviewed
Send a formal collection demand
Formal dunning carries consumer-protection formatting duties — never autonomous.
Human review required
Maximum maturity: approval_only
Legal activation: unreviewed
Pool your data to set rents
Your numbers never feed a shared pricing model. Hardcoded — no setting can switch it on.
Prohibited in Aptoria
Maximum maturity: disabled
Legal activation: unreviewed
Set rent from external data
Launch policy prohibits automated rent setting from external data, including public-data inputs.
Prohibited in Aptoria
Maximum maturity: disabled
Legal activation: unreviewed
Report a resident to a credit bureau
Credit reporting remains unavailable for launch; a configured provider or approval cannot enable it.
Human review required
Maximum maturity: approval_only
Legal activation: unreviewed
Downgrade or close a habitability concern
A model cannot reduce urgency or close a habitability concern without accountable human review.
Prohibited in Aptoria
Maximum maturity: disabled
Legal activation: unreviewed
Override a deposit deadline
Deposit deadlines cannot be extended or suppressed by an agent, workspace setting, or model.
Prohibited in Aptoria
Maximum maturity: disabled
Legal activation: unreviewed
Impose a mandatory fee
The agent cannot create or impose a mandatory fee; enabled fee workflows require separately reviewed authority.
Prohibited in Aptoria
Maximum maturity: disabled
Legal activation: unreviewed
Score a resident’s risk
Proprietary resident risk scores are permanently prohibited. Review source facts and make required decisions as a human.
Prohibited in Aptoria
Maximum maturity: disabled
Legal activation: unreviewed
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