Base URL
https://app.lokatix.comAuthentication
Every request must include your API key. Pass it via the x-api-key header or as a Bearer token in the Authorization header.
curl https://app.lokatix.com/api/v1/properties \ -H "x-api-key: YOUR_API_KEY"
curl https://app.lokatix.com/api/v1/properties \ -H "Authorization: Bearer YOUR_API_KEY"
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 status | Meaning |
|---|---|
200 | OK — list request succeeded |
201 | Created — resource created successfully |
400 | Bad Request — validation error or malformed JSON |
401 | Unauthorized — missing or invalid API key |
500 | Internal Server Error — unexpected server error |
Endpoints
| Method | URL | Description |
|---|---|---|
| GET | /api/v1/properties | List all properties for the authenticated account. |
| POST | /api/v1/properties | Create a new property. |
| GET | /api/v1/tenants | List all tenants for the authenticated account. |
| POST | /api/v1/tenants | Create a new tenant. |
| GET | /api/v1/leases | List all leases for the authenticated account. |
| POST | /api/v1/leases | Create a new lease. |
| GET | /api/v1/payments | List all payment records for the authenticated account. |
| POST | /api/v1/payments | Create a new payment record. |
Endpoint reference
/api/v1/propertiesList all properties for the authenticated account.
| Name | Type | Description |
|---|---|---|
status | string | Filter by status: available | rented | maintenance | archived |
type | string | Filter by type: apartment | house | studio | parking | garage | commercial | office | other |
limit | number | Number of results to return (default: 50, max: 200) |
offset | number | Number of results to skip for pagination (default: 0) |
curl "https://app.lokatix.com/api/v1/properties?status=active&limit=10" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/propertiesCreate a new property.
JSON body with property fields. Required: name, type, address, postal_code, city, rent_amount.
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
}'/api/v1/tenantsList all tenants for the authenticated account.
| Name | Type | Description |
|---|---|---|
status | string | Filter by status: active | pending | archived |
limit | number | Number of results to return (default: 50, max: 200) |
offset | number | Number of results to skip for pagination (default: 0) |
curl "https://app.lokatix.com/api/v1/tenants?status=active&limit=10" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/tenantsCreate a new tenant.
JSON body with tenant fields. Required: first_name, last_name, email.
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"
}'/api/v1/leasesList all leases for the authenticated account.
| Name | Type | Description |
|---|---|---|
status | string | Filter by status: draft | pending_signature | active | terminated | archived |
limit | number | Number of results to return (default: 50, max: 200) |
offset | number | Number of results to skip for pagination (default: 0) |
curl "https://app.lokatix.com/api/v1/leases?status=active&limit=10" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/leasesCreate a new lease.
JSON body with lease fields. Required: property_id, tenant_id, lease_type, start_date, rent_amount.
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
}'/api/v1/paymentsList all payment records for the authenticated account.
| Name | Type | Description |
|---|---|---|
status | string | Filter by status: pending | partial | paid | late | unpaid |
limit | number | Number of results to return (default: 50, max: 200) |
offset | number | Number of results to skip for pagination (default: 0) |
curl "https://app.lokatix.com/api/v1/payments?status=active&limit=10" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/paymentsCreate a new payment record.
JSON body with payment fields. Required: lease_id, due_date, amount_due.
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
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.