Skip to main content
Beta! Dokumentasjonen er automatisk generert. Informasjonen kan være ufullstendig og inneholde feil, spesielt skjermbilder og videoer. Se Om hjelpesidene. Vi vil veldig gjerne ha innspill: Kontakt oss via «Fant du det du lette etter?» nederst, i chatten nede til høyre eller på support@placepoint.no – vi svarer så fort vi kan!

Get notified straight away

Create, list and delete subscriptions to changes for a property or a company, delivered as signed CloudEvents webhooks to a URL you supply yourself.

Nøkkelen virker i dag på Leietaker-API og dagens Data API; Placepoint API godtar samme nøkkel når det lanseres.

Prøv med et ekte bygg: Oslo S, Jernbanetorget 1

  • Trial key with GitHub in under a minute
  • Signed webhooks
  • CloudEvents 1.0
  • At-least-once delivery
  • Idempotent creation

ℹ️ The endpoint responds once Placepoint API has launched. The contract below is final; the Tenant API already responds.

From change to alert

These calls answer the question of how a system gets notified when something actually changes, instead of polling an object again every hour. Banks following up mortgage security need an alert when an owner or an encumbrance changes, managers need an alert when a new transaction is registered on a property in the portfolio, and systems monitoring many companies at once avoid fetching each company again just to find out that nothing has happened.

A subscription targets either a property or a company plus a list of event types, for example OWNER_CHANGED or TRANSACTION_REGISTERED. Each event is delivered as a signed CloudEvents 1.0 webhook, and delivery is at-least-once, so the receiver must handle the same id arriving more than once.

  • Idempotent creation

    createSubscription requires an Idempotency-Key header, so a retry of the same creation gives the same response for 24 hours instead of a duplicate subscription.
  • Signed and verifiable

    Every webhook carries the Placepoint-Signature header, to verify with HMAC before you trust the content.
  • At-least-once, handle duplicates

    A failed attempt is retried for up to 24 hours, so the same id can arrive more than once on the receiving side.

Fields that actually tell you something

Three calls cover the whole life cycle of a subscription, all with the subscriptions.write scope.

Create a subscription.

POST/subscriptions
curl -X POST "https://data.placepoint.no/subscriptions" \
-H "Authorization: Bearer $TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"target":{"kind":"PROPERTY","country":"NO","cadastreId":"0301-207-76-0-0"},"events":["OWNER_CHANGED","TRANSACTION_REGISTERED"],"webhookUrl":"https://example.com/webhooks/placepoint","secret":"whsec_REPLACE_WITH_32_RANDOM_CHARS"}'

svar · 201

{
"id": "sub_9f2c1a",
"target": {
"kind": "PROPERTY",
"country": "NO",
"cadastreId": "0301-207-76-0-0"
},
"events": [
"OWNER_CHANGED",
"TRANSACTION_REGISTERED"
],
"webhookUrl": "https://example.com/webhooks/placepoint",
"status": "ACTIVE",
"createdAt": "2026-09-07T10:15:00Z"
}

Scope: subscriptions.writeTeknisk referanse og Try-it

Vis alle felt (10)
FeltTypeBeskrivelse
idstringSubscription identifier.
target.kindstringResource type the subscription targets.
target.countrystringISO 3166-1 alpha-2, present for a PROPERTY target.
target.cadastreIdstringCadastre identifier, present for a PROPERTY target.
target.schemestringISO 6523 ICD code, present for a COMPANY target.
target.idstringRegister identifier, present for a COMPANY target.
events[]string[]Event types delivered to this subscription.
webhookUrlstringThe HTTPS endpoint events are delivered to.
statusstringSubscription status.
createdAtstringWhen the subscription was created.

List your own subscriptions

listSubscriptions shows your own active and paused subscriptions.

GET/subscriptions
curl -X GET "https://data.placepoint.no/subscriptions" \
-H "Authorization: Bearer $TOKEN"

svar · 200

{
"items": [
{
"id": "sub_9f2c1a",
"target": {
"kind": "PROPERTY",
"country": "NO",
"cadastreId": "0301-207-76-0-0"
},
"events": [
"OWNER_CHANGED",
"TRANSACTION_REGISTERED"
],
"webhookUrl": "https://example.com/webhooks/placepoint",
"status": "ACTIVE",
"createdAt": "2026-09-07T10:15:00Z"
}
]
}

Scope: subscriptions.writeTeknisk referanse og Try-it

Vis alle felt (10)
FeltTypeBeskrivelse
items[].idstringSubscription identifier.
items[].target.kindstringResource type the subscription targets.
items[].target.countrystringISO 3166-1 alpha-2, present for a PROPERTY target.
items[].target.cadastreIdstringCadastre identifier, present for a PROPERTY target.
items[].target.schemestringISO 6523 ICD code, present for a COMPANY target.
items[].target.idstringRegister identifier, present for a COMPANY target.
items[].events[]string[]Event types delivered to this subscription.
items[].webhookUrlstringThe HTTPS endpoint events are delivered to.
items[].statusstringSubscription status.
items[].createdAtstringWhen the subscription was created.

Delete a subscription

deleteSubscription stops delivery immediately.

DELETE/subscriptions/{subscriptionId}
curl -X DELETE "https://data.placepoint.no/subscriptions/sub_9f2c1a" \
-H "Authorization: Bearer $TOKEN"

Scope: subscriptions.writeTeknisk referanse og Try-it

A delivered event looks like this:

{
"specversion": "1.0",
"type": "no.placepoint.property.owner_changed",
"source": "https://data.placepoint.no/subscriptions/sub_9f2c1a",
"id": "evt_4b2a1c",
"time": "2026-09-07T10:15:00Z",
"datacontenttype": "application/json",
"data": {
"country": "NO",
"cadastreId": "0301-208-15-0-0",
"changedField": "owners"
}
}

Verify the signature in the Placepoint-Signature: t=<unix>,v1=<hex> header before you trust the content:

const crypto = require("node:crypto");

function isValid(header, rawBody, secret) {
const [t, v1] = header.split(",").map((p) => p.split("=")[1]);
const expected = crypto
.createHmac("sha256", secret)
.update(`${t}.${rawBody}`)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}

Three steps to your first response

  1. Log in with GitHub

    One click, under a minute, no payment card. The key comes back to this page.
  2. Call the endpoint

    The curl above fills in with your key once you are logged in. createSubscription needs a target (property or company), event types and an Idempotency-Key.
  3. Use the response

    Verify the signature in Placepoint-Signature with your secret before you trust the content, using the function in the example above.

Data and sources

The alerts are triggered by the same changes that the rest of the API exposes: change of owner, new transaction and equivalent events on the property or company the subscription covers.

See also

Questions and answers

What happens if I send the same creation twice?
The Idempotency-Key header makes a retry safe: the same key within 24 hours returns the same response instead of a new subscription.
Can the same event arrive several times?
Yes. Delivery is at-least-once, and a failed attempt is retried at increasing intervals for up to 24 hours. The receiver must handle the same id arriving more than once.
How do I verify that a webhook really comes from Placepoint?
The Placepoint-Signature: t=<unix>,v1=<hex> header carries an HMAC signature over the timestamp and body. Compute the same HMAC with your secret and compare, as in the example above.
Which event types can I subscribe to?
OWNER_CHANGED and TRANSACTION_REGISTERED are the core, with more event types on property and company as the API is built out.
Beta! Dokumentasjonen er automatisk generert. Informasjonen kan være ufullstendig og inneholde feil, spesielt skjermbilder og videoer. Se Om hjelpesidene. Vi vil veldig gjerne ha innspill: Kontakt oss via «Fant du det du lette etter?» nederst, i chatten nede til høyre eller på support@placepoint.no – vi svarer så fort vi kan!