Skip to content
For developers
View as Markdown

Endpoint reference

Every REST endpoint on api.actuallycare.com — 64 operations across 10 resource groups.

The REST API exposes 64 operations across 10 resource groups. All requests use the base URL https://api.actuallycare.com/v1 and authenticate with an API key or JWT.

This reference is generated from the live OpenAPI spec. Machine-readable version: openapi.json.

API Keys#

EndpointSummary
GET /v1/api-keysList API keys
POST /v1/api-keysCreate new API key
PATCH /v1/api-keys/{id}/scopesUpdate API key scopes
PUT /v1/api-keys/{id}/revokeRevoke API key
DELETE /v1/api-keys/{id}Delete API key

Appointments#

EndpointSummary
GET /v1/appointmentsList all appointments
POST /v1/appointmentsCreate new appointment
GET /v1/appointments/{id}Get appointment by ID
PUT /v1/appointments/{id}Update appointment
DELETE /v1/appointments/{id}Delete appointment

Authentication#

EndpointSummary
POST /v1/auth/registerRegister new user
POST /v1/auth/loginLogin user
POST /v1/auth/refreshRefresh access token
POST /v1/auth/logoutLogout user
GET /v1/auth/verifyVerify token validity
GET /v1/auth/profileGet user profile
PUT /v1/auth/profileUpdate user profile
POST /v1/auth/logout-allLogout from all devices
GET /v1/auth/sessionsList active sessions

Billing#

EndpointSummary
GET /v1/billing/public-plansGet public plan pricing
POST /v1/billing/public-checkoutStart checkout without an account
GET /v1/billing/plansGet plans with checkout identifiers
GET /v1/billing/subscriptionGet current subscription status
POST /v1/billing/checkoutStart checkout for a subscription
POST /v1/billing/portalOpen the billing portal

Clients#

EndpointSummary
GET /v1/clientsList all clients
POST /v1/clientsCreate new client
GET /v1/clients/{id}Get client by ID
PUT /v1/clients/{id}Update client
DELETE /v1/clients/{id}Delete client

Contacts#

EndpointSummary
GET /v1/contactsList contacts
POST /v1/contactsCreate a contact
GET /v1/contacts/searchSearch contacts
GET /v1/contacts/{id}Get a contact
PUT /v1/contacts/{id}Update a contact
DELETE /v1/contacts/{id}Delete a contact
PATCH /v1/contacts/{id}/archiveArchive a contact
PATCH /v1/contacts/{id}/restoreRestore an archived contact

Escrows#

EndpointSummary
GET /v1/escrowsList escrows
POST /v1/escrowsCreate an escrow
GET /v1/escrows/{id}Get an escrow
PUT /v1/escrows/{id}Update an escrow
DELETE /v1/escrows/{id}Delete an escrow
PATCH /v1/escrows/{id}/archiveArchive an escrow
PATCH /v1/escrows/{id}/restoreRestore an archived escrow
GET /v1/escrows/{id}/timelineGet an escrow's timeline

Leads#

EndpointSummary
GET /v1/leadsList all leads
POST /v1/leadsCreate new lead
GET /v1/leads/{id}Get lead by ID
PUT /v1/leads/{id}Update lead
DELETE /v1/leads/{id}Delete lead
POST /v1/leads/{id}/convertConvert lead to client

Listings#

EndpointSummary
GET /v1/listingsList all property listings
POST /v1/listingsCreate new listing
GET /v1/listings/{id}Get listing by ID
PUT /v1/listings/{id}Update listing
DELETE /v1/listings/{id}Delete listing

Webhooks#

EndpointSummary
GET /v1/webhooksList webhook subscriptions
POST /v1/webhooksCreate a webhook subscription
GET /v1/webhooks/eventsList available webhook events
GET /v1/webhooks/events/categoriesList webhook event categories
PUT /v1/webhooks/{id}Update a webhook subscription
DELETE /v1/webhooks/{id}Deactivate a webhook subscription
GET /v1/webhooks/{id}/logsGet webhook delivery logs

Error responses#

Every endpoint returns errors in the same envelope — success is false and an error object carries a stable machine-readable code and a human message. Branch on error.code, never the message. See Errors for the full status-code and error-code reference and retry guidance.

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request data",
    "errorId": "ERR_1782972632_ab12cd",
    "correlationId": "b7e4c2a8-3f6d-4e29-9c41-8d5a2f7e1b93",
    "details": null
  },
  "timestamp": "2026-07-15T14:32:10.000Z"
}