REST API Documentation
Build integrations with Urbaneta. Automate invoicing, sync residents, read meter data, and more.
API Keys
Generate API keys in your account settings. Each key is scoped to your organization.
Bearer Auth
All endpoints require a valid Bearer token. Tokens expire in 15 minutes — use refresh tokens to stay authenticated.
Webhooks
Subscribe to events (invoice.created, payment.received, reading.submitted) with HMAC-signed payloads.
https://testlnp.workizon.com/apiAll requests must be made over HTTPS. Replace with your self-hosted instance URL if applicable.
Authentication
Include your access token in the Authorization header on every request.
Quick start
Three steps to your first API integration.
1. Authenticate and get your token
curl -X POST https://testlnp.workizon.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"yourpassword"}'
# Response
{ "data": { "accessToken": "eyJ...", "refreshToken": "dGhp..." } }2. List your buildings
curl https://testlnp.workizon.com/api/buildings \ -H "Authorization: Bearer $ACCESS_TOKEN"
3. Generate invoices for a building
curl -X POST https://testlnp.workizon.com/api/invoices/generate-bulk \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"buildingId":"<uuid>","periodStart":"2025-01-01","periodEnd":"2025-01-31"}'JavaScript / TypeScript example
No SDK required — the API uses standard REST. Here's a pattern for fetching invoices and recording a payment.
# Fetch unpaid invoices
curl "https://testlnp.workizon.com/api/invoices?buildingId=<uuid>&status=sent" \
-H "Authorization: Bearer $ACCESS_TOKEN"
# Mark invoice as paid
curl -X PATCH "https://testlnp.workizon.com/api/invoices/<invoice-id>" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status":"paid","paidDate":"2025-02-01"}'Endpoint Reference
Authentication
/auth/loginLogin with email and password, returns access and refresh tokens/auth/refreshRefresh an expired access token using a refresh token/auth/logoutInvalidate the current session/auth/magic-linkRequest a magic link login emailBuildings
/buildingsList all buildings for the authenticated tenant/buildingsCreate a new building/buildings/:idGet a single building by ID/buildings/:idUpdate building settings (name, address, billing, etc.)/buildings/:idDelete a building (requires password confirmation)Apartments
/buildings/:id/apartmentsList apartments in a building/buildings/:id/apartmentsCreate an apartment/buildings/:id/apartments/:aptIdUpdate apartment details/buildings/:id/apartments/:aptIdDelete an apartmentInvoices
/invoicesList invoices with filtering (status, building, date range)/invoices/:idGet invoice details including line items/invoices/generate-bulkGenerate invoices for a building and period/invoices/:idUpdate invoice status, payment date, or reference/invoices/send-bulkSend invoices by email to residents/invoices/:id/pdfDownload invoice as PDFMeters
/metersList meter definitions for a building/metersCreate a new meter/meters/:id/readingsSubmit a meter reading/meters/ocrExtract a reading from a meter photo using AI OCRResidents & Users
/residentsList residents linked to your buildings/invitationsInvite a user to an apartment/invitationsList pending invitations/invitations/:idCancel an invitationPayments
/payments/banklinkInitiate a Paysera / Maksekeskus banklink payment/paymentsList recorded payments for your tenant/bank-statements/importImport CSV/XML bank statement for auto-reconciliationWebhooks
/webhooksList configured webhook endpoints/webhooksCreate a webhook endpoint (URL + event types)/webhooks/:idDelete a webhook endpointWebhook event types
Subscribe to any combination of these events when creating a webhook endpoint.
invoice.createdA new invoice was generatedinvoice.sentInvoice was sent to the resident by emailinvoice.paidInvoice marked as paid (manual or banklink)invoice.overdueInvoice passed its due date unpaidpayment.receivedA payment was recorded against an invoicereading.submittedA resident submitted a meter readingreading.confirmedManager confirmed a meter readingmaintenance.createdA new maintenance request was submittedmaintenance.updatedMaintenance request status changedExample payload
HTTP error codes
400Bad RequestInvalid request body or missing required fields401UnauthorizedMissing or expired access token403ForbiddenAuthenticated but insufficient permissions404Not FoundResource not found or not accessible by your tenant409ConflictDuplicate resource (e.g. apartment number already exists)422UnprocessableValidation failed — check the errors array in the response429Rate LimitedToo many requests — retry after the Retry-After header value500Server ErrorUnexpected error — contact support if it persistsReady to integrate?
Log in to your Urbaneta account to generate API keys and configure webhook endpoints.
Go to dashboard