Your integration
Read your own integration: status, webhook health, how far behind you are, and how many properties you cover. The right first call, and a good health check.
GET
https://api.doorloom.com/api/integrations/v1/me
Takes no parameters and changes nothing.
curl https://api.doorloom.com/api/integrations/v1/me \
-H "Authorization: Bearer $DOORLOOM_API_KEY"
Response
{
"success": true,
"message": "OK",
"data": {
"id": 12,
"slug": "acme-pms",
"name": "Acme PMS",
"status": "active",
"brand": {
"id": 4,
"name": "Amber Stays"
},
"api_version": "2026-09",
"webhook": {
"configured": true,
"url": "https://acme.example.com/hooks/doorloom",
"event_types": [
"availability.changed",
"rates.changed",
"restrictions.changed",
"inventory.changed",
"property.changed",
"booking.changed"
],
"last_sequence": 1047,
"undelivered_events": 0,
"consecutive_failures": 0,
"last_success_at": "2026-10-01T16:30:04+05:30",
"last_failure_at": null,
"paused_at": null,
"paused_reason": null
},
"horizon_days": 365,
"covered_properties": 6
}
}
| Field | Type | Description |
|---|---|---|
id
|
integer | Your integration id. |
slug
|
string | Your integration slug. Also sent as the X-Doorloom-Integration header on every webhook. |
name
|
string | Display name Doorloom staff gave the integration. |
status
|
string | active, paused or disabled. A paused integration still has full API access — only webhook delivery is stopped. |
brand.id
|
integer | The brand this integration belongs to. |
brand.name
|
string | The brand name. |
api_version
|
string | The version your payloads are shaped by. Currently 2026-09. |
webhook.configured
|
boolean | False when no webhook URL is registered. Nothing will be delivered until one is. |
webhook.url
|
string|null | Where deliveries go. |
webhook.event_types
|
array | The event types you are subscribed to. All of them unless staff narrowed it. |
webhook.last_sequence
|
integer | The highest sequence Doorloom has issued you. Compare against your own cursor to see whether you are behind. |
webhook.undelivered_events
|
integer | Events waiting or being retried. Should sit at 0 in a healthy integration. |
webhook.consecutive_failures
|
integer | Failed deliveries since the last success. Five, plus six hours without a success, triggers an auto-pause. |
webhook.last_success_at
|
string|null | ISO-8601. Last time a delivery was accepted. |
webhook.last_failure_at
|
string|null | ISO-8601. Last time one was not. |
webhook.paused_at
|
string|null | ISO-8601. When delivery was paused, if it is. |
webhook.paused_reason
|
string|null | manual (staff), auto (sustained failure) or gone (your endpoint returned 410). |
horizon_days
|
integer | How far ahead Doorloom generates events for you. Dates beyond this are not pushed until they come into range. |
covered_properties
|
integer | How many properties your integration currently covers. |
Using it as a health check
Poll this endpoint from your own monitoring, no more than once a minute, and alert on two things:
webhook.paused_reasonis not null — you have stopped receiving events, and the reason tells you whose problem it is.webhook.last_sequencehas run well ahead of your stored cursor and stays there — you are behind, and should replay from your cursor.
last_sequence also arrives on every ping
A
ping reports the
current last_sequence without consuming one, so if you are already handling pings you
get the same drift signal for free.Errors
Errors
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHENTICATED |
No API key, or a key that is not valid. Rotating your API key invalidates the previous one immediately. |
| 403 | NOT_INTEGRATION_TOKEN |
The bearer token is valid but is not an integration API key — it belongs to another Doorloom token surface. Integration keys are the only credential this API accepts. |
| 403 | INTEGRATION_DISABLED |
Doorloom staff disabled this integration. No events are recorded and no API call succeeds. This is distinct from paused: a paused integration keeps full API access and only stops receiving webhooks. |
| 429 | RATE_LIMITED |
You exceeded one of the rate limits. The standard Retry-After and X-RateLimit-* headers are set on the response. |