Evictions API

Public endpoints

No credential. Health, the OpenAPI document, the endpoint behind the website’s forms, and account sign-up and sign-in.

The examples use https://api.evictionsapi.com and placeholder keys. Conventions shared by all endpoints (errors, idempotency, pagination) are in the API reference.

What is available todayYou can start a real eviction case with Evictions API for a rental property in any US state or DC. After you submit a case, we engage a licensed attorney in the property’s state for it and confirm by email. Nothing is served on a tenant or filed in court until that attorney has reviewed the case.The full statement

Endpoints

GET /v1/health

Liveness check

Authentication: none

Responses

StatusMeaningBody
200The service is up.{ ok: boolean }

Example

curl example for GET /v1/health
curl https://api.evictionsapi.com/v1/health

GET /v1/openapi.json

This OpenAPI document

Authentication: none

Responses

StatusMeaningBody
200The OpenAPI 3.1 document.object

Example

curl example for GET /v1/openapi.json
curl https://api.evictionsapi.com/v1/openapi.json

POST /v1/auth/signup

Create an account: an unverified customer organization, its owner and a session. No credential; the website calls this from its servers

Authentication: none

Request body

JSON. Fields not listed are rejected.

NameTypeRequiredDescription
namestringYes1 to 120 characters.
organizationNamestringYes1 to 120 characters.
emailstringYesFormat: email. Up to 254 characters. Pattern ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$.
passwordstringYes10 to 200 characters.

Responses

StatusMeaningBody
201The new session, user and organization. An `Idempotency-Key` header is ignored.{ token: string, user: object, organization: object, modes: object }
400The request is invalid.Error
401Sign-in only: the email or password is incorrect (one fixed answer for both).Error
409Sign-up only: an account with that email already exists (`email_taken`).Error
413The request body is too large.Error
429Too many sign-up and sign-in attempts from this address: at most 10 every 10 minutes. Sign-in only: also after 5 wrong passwords for one account within 15 minutes, until the oldest of them is 15 minutes old, whatever password is sent; a successful sign-in clears the count. `Retry-After` gives the seconds to wait.Error
503`busy`: too many password checks are waiting. Nothing was created or changed. `Retry-After: 5` gives the seconds to wait; try again.Error

Example

curl example for POST /v1/auth/signup
curl -X POST https://api.evictionsapi.com/v1/auth/signup \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pat Landlord",
  "organizationName": "Acme Property",
  "email": "pat@example.com",
  "password": "a long passphrase, not this one"
}'

POST /v1/auth/login

Sign in with email and password. A wrong email and a wrong password get the identical `invalid_credentials` answer

Authentication: none

Request body

JSON. Fields not listed are rejected.

NameTypeRequiredDescription
emailstringYes1 to 254 characters.
passwordstringYes1 to 200 characters.

Responses

StatusMeaningBody
200A new session, with the user and organization. An `Idempotency-Key` header is ignored.{ token: string, user: object, organization: object, modes: object }
400The request is invalid.Error
401Sign-in only: the email or password is incorrect (one fixed answer for both).Error
409Sign-up only: an account with that email already exists (`email_taken`).Error
413The request body is too large.Error
429Too many sign-up and sign-in attempts from this address: at most 10 every 10 minutes. Sign-in only: also after 5 wrong passwords for one account within 15 minutes, until the oldest of them is 15 minutes old, whatever password is sent; a successful sign-in clears the count. `Retry-After` gives the seconds to wait.Error
503`busy`: too many password checks are waiting. Nothing was created or changed. `Retry-After: 5` gives the seconds to wait; try again.Error

Example

curl example for POST /v1/auth/login
curl -X POST https://api.evictionsapi.com/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
  "email": "pat@example.com",
  "password": "a long passphrase, not this one"
}'

POST /v1/public/leads

Send a website request: access, a partner-attorney application, or a message. No credential; browser calls are allowed from the website origin only

Authentication: none

Request body

JSON. The body is one of these shapes. Fields not listed are rejected.

When kind is "access_request"

NameTypeRequiredDescription
kindstringYesAlways "access_request".
namestringYes1 to 120 characters.
emailstringYesFormat: email. Up to 254 characters. Pattern ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$.
companystringNo1 to 200 characters.
rolestringNoOne of: "property_manager", "landlord", "developer", "attorney", "other".
statesarray of stringNo1 to 51 items.
messagestringNo1 to 4000 characters.
contact_urlstringNoHoneypot: leave empty. A request with this field filled in is acknowledged and discarded. Up to 0 characters.

When kind is "attorney_application"

NameTypeRequiredDescription
kindstringYesAlways "attorney_application".
namestringYes1 to 120 characters.
emailstringYesFormat: email. Up to 254 characters. Pattern ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$.
companystringNo1 to 200 characters.
statesarray of stringYes1 to 51 items.
barNumberstringYes1 to 60 characters.
messagestringNo1 to 4000 characters.
contact_urlstringNoHoneypot: leave empty. A request with this field filled in is acknowledged and discarded. Up to 0 characters.

When kind is "contact"

NameTypeRequiredDescription
kindstringYesAlways "contact".
namestringYes1 to 120 characters.
emailstringYesFormat: email. Up to 254 characters. Pattern ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$.
messagestringYes1 to 4000 characters.
contact_urlstringNoHoneypot: leave empty. A request with this field filled in is acknowledged and discarded. Up to 0 characters.

Responses

StatusMeaningBody
202The request was received. A request with the `contact_url` honeypot field filled in gets the same answer and is discarded.{ received: boolean }
400The request is invalid.Error
413The request body is too large.Error
429Too many requests from this address: at most 5 every 10 minutes. `Retry-After` gives the seconds to wait.Error

Example

curl example for POST /v1/public/leads
curl -X POST https://api.evictionsapi.com/v1/public/leads \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "access_request",
  "name": "Pat Landlord",
  "email": "pat@example.com",
  "role": "landlord",
  "states": ["FL"]
}'