Reference

Lokatix API v1

Public REST API for external integrations. All endpoints are scoped to the authenticated account and return JSON.

Base URL

https://app.lokatix.com

Authentication

Every request must include your API key. Pass it via the x-api-key header or as a Bearer token in the Authorization header.

Option A — x-api-key header (recommended)
curl https://app.lokatix.com/api/v1/properties \
  -H "x-api-key: YOUR_API_KEY"
Option B — Authorization header
curl https://app.lokatix.com/api/v1/properties \
  -H "Authorization: Bearer YOUR_API_KEY"
Where to find your API key: Log in to Lokatix, go to Settings → API and copy your personal key. Keep it secret — it grants full access to your account data.

Response format

All responses are JSON. List endpoints return a paginated envelope:

{
  "data":   [...],   // array of records
  "total":  120,     // total number of matching records
  "limit":  50,      // page size used
  "offset": 0        // page start used
}

Create (POST) endpoints return { "data": { ... } } with HTTP 201 on success. Errors return { "error": "message" } with an appropriate HTTP status code.

HTTP statusMeaning
200OK — list request succeeded
201Created — resource created successfully
400Bad Request — validation error or malformed JSON
401Unauthorized — missing or invalid API key
500Internal Server Error — unexpected server error

Endpoints

MethodURLDescription
GET/api/v1/propertiesList all properties for the authenticated account.
POST/api/v1/propertiesCreate a new property.
GET/api/v1/tenantsList all tenants for the authenticated account.
POST/api/v1/tenantsCreate a new tenant.
GET/api/v1/leasesList all leases for the authenticated account.
POST/api/v1/leasesCreate a new lease.
GET/api/v1/paymentsList all payment records for the authenticated account.
POST/api/v1/paymentsCreate a new payment record.

Endpoint reference

GET/api/v1/properties

List all properties for the authenticated account.

Query parameters
NameTypeDescription
statusstringFilter by status: available | rented | maintenance | archived
typestringFilter by type: apartment | house | studio | parking | garage | commercial | office | other
limitnumberNumber of results to return (default: 50, max: 200)
offsetnumberNumber of results to skip for pagination (default: 0)
Example
curl "https://app.lokatix.com/api/v1/properties?status=active&limit=10" \
  -H "x-api-key: YOUR_API_KEY"
POST/api/v1/properties

Create a new property.

Request body

JSON body with property fields. Required: name, type, address, postal_code, city, rent_amount.

Example
curl -X POST "https://app.lokatix.com/api/v1/properties" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Appartement Centre-ville",
  "type": "apartment",
  "address": "12 rue de la Paix",
  "postal_code": "75001",
  "city": "Paris",
  "rent_amount": 1200
}'
GET/api/v1/tenants

List all tenants for the authenticated account.

Query parameters
NameTypeDescription
statusstringFilter by status: active | pending | archived
limitnumberNumber of results to return (default: 50, max: 200)
offsetnumberNumber of results to skip for pagination (default: 0)
Example
curl "https://app.lokatix.com/api/v1/tenants?status=active&limit=10" \
  -H "x-api-key: YOUR_API_KEY"
POST/api/v1/tenants

Create a new tenant.

Request body

JSON body with tenant fields. Required: first_name, last_name, email.

Example
curl -X POST "https://app.lokatix.com/api/v1/tenants" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "first_name": "Marie",
  "last_name": "Dupont",
  "email": "marie.dupont@example.com",
  "phone": "+33 6 12 34 56 78"
}'
GET/api/v1/leases

List all leases for the authenticated account.

Query parameters
NameTypeDescription
statusstringFilter by status: draft | pending_signature | active | terminated | archived
limitnumberNumber of results to return (default: 50, max: 200)
offsetnumberNumber of results to skip for pagination (default: 0)
Example
curl "https://app.lokatix.com/api/v1/leases?status=active&limit=10" \
  -H "x-api-key: YOUR_API_KEY"
POST/api/v1/leases

Create a new lease.

Request body

JSON body with lease fields. Required: property_id, tenant_id, lease_type, start_date, rent_amount.

Example
curl -X POST "https://app.lokatix.com/api/v1/leases" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "property_id": "uuid-of-property",
  "tenant_id": "uuid-of-tenant",
  "lease_type": "empty",
  "start_date": "2026-05-01",
  "rent_amount": 1200
}'
GET/api/v1/payments

List all payment records for the authenticated account.

Query parameters
NameTypeDescription
statusstringFilter by status: pending | partial | paid | late | unpaid
limitnumberNumber of results to return (default: 50, max: 200)
offsetnumberNumber of results to skip for pagination (default: 0)
Example
curl "https://app.lokatix.com/api/v1/payments?status=active&limit=10" \
  -H "x-api-key: YOUR_API_KEY"
POST/api/v1/payments

Create a new payment record.

Request body

JSON body with payment fields. Required: lease_id, due_date, amount_due.

Example
curl -X POST "https://app.lokatix.com/api/v1/payments" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "lease_id": "uuid-of-lease",
  "due_date": "2026-05-01",
  "amount_due": 1200,
  "payment_type": "rent"
}'

Pagination

All list endpoints support cursor-free offset pagination via limit and offset. The response always includes a total count so you can compute the number of pages.

# Fetch page 3 (zero-indexed) with 20 items per page
curl "https://app.lokatix.com/api/v1/properties?limit=20&offset=40" \
  -H "x-api-key: YOUR_API_KEY"

Rate limiting

Planned. Rate limiting is not enforced in the current version. A future release will introduce per-key limits (e.g., 100 requests / minute). Exceeding the limit will return HTTP 429 Too Many Requests with a Retry-After header. We recommend keeping your request rate below 60 req/min in anticipation of this change.