Integration på 30 minutter
Celembi rører ikke jeres anlæg. Der er ingen SCADA-kobling, ingen adgang til jeres OT-net og intet, der skal installeres. Det, der skal ind i Celembi, er tal, I allerede har: hvad I kan levere eller har brug for, og hvad måleren viste. Denne side viser den korteste vej fra konto til første afregning, og hvad I får tilbage som dokumentation.
- Log ind med jeres Microsoft-konto, opret organisationen og lav en API-nøgle. Alt kan også gøres i portalen uden kode.
- Registrér jeres enhed (varmekilde eller net) og læg et tilbud eller et behov på bogen. Motoren matcher og foreslår en handel, I accepterer.
- Efter leverancen indsender begge parter deres måleraflæsning: i portalen, som CSV eller som ét API-kald for hele måneden. Så afregnes handlen, og dokumentationen ligger klar.
Hvad I skal have klar
- En Microsoft-konto i jeres organisation (den, I logger på Office med). Ingen ny adgangskode.
- Jeres CVR-nummer. Verifikation (CVR og et brev fra fjernvarmeselskabet) løfter loftet på antal åbne ordrer.
- For jeres enhed: navn, rolle (sælger eller køber), varmekildetype, kapacitet i MW, temperaturinterval, og gerne placering og årligt volumen.
- Til aflæsninger: den målte MWh, GJ eller kWh pr. leverance, og eventuelt måler-ID. Det er alt, der kræves af jeres måler.
- Valgfrit: en URL i jeres ERP eller integrationsplatform, der kan modtage et HTTPS-kald, når noget sker i en handel.
Alle kald nedenfor går til https://api.celembi.dk med jeres nøgle i headeren X-API-Key. Ethvert svar er en JSON-konvolut med success, data, eventuelt error og et request_id, som I kan henvise til, hvis noget skal undersøges.
Trin 1: Konto og API-nøgle 5 minutter
Gå til portalen, log ind med Microsoft og opret jeres organisation. Ved oprettelsen accepterer I vilkårene; de gælder for alle handler, jeres nøgle laver. Kolleger inviteres på e-mail under Indstillinger.
API-nøgler laves under Indstillinger af organisationens ejer. Nøglen vises kun én gang: gem den i jeres hemmelighedslager, aldrig i kode eller mails. Nøglen er bundet til jeres organisation, så ethvert kald kun ser jeres egne enheder, ordrer og handler. Mist I nøglen, tilbagekalder I den og laver en ny; intet andet ændrer sig.
curl https://api.celembi.dk/api/v2/admin/me \
-H "X-API-Key: $CELEMBI_API_KEY"
Svaret viser, hvilken organisation nøglen tilhører. Det er det første kald, I bør lave fra jeres integration.
Trin 2: Jeres enhed 5 minutter
En enhed er det, der leverer eller modtager varmen: et datacenter, en fabrik, en køleproces, eller fjernvarmenettet. Enheden registreres én gang og bruges i alle ordrer og handler. Det er nemmest i portalen under Enheder; via API ser det sådan ud for et net, der køber:
curl -X POST https://api.celembi.dk/api/v2/entities \
-H "X-API-Key: $CELEMBI_API_KEY" -H "Content-Type: application/json" \
-d '{
"tenant_id": "jeres-organisation",
"name": "Nordby Fjernvarme, hovednettet",
"roles": ["buyer"],
"heat_source_type": "district_heating",
"capacity_mwh": "12.000",
"temperature_min_celsius": 60.0,
"temperature_max_celsius": 90.0,
"annual_volume_mwh": "85000.000",
"location_lat": 56.15, "location_lon": 10.20,
"price_area": "DK1",
"webhook_url": "https://erp.nordby.example/celembi",
"terms_accepted": true
}'
Svaret indeholder entity_id, som alle senere kald peger på. Rollen kan være seller, buyer eller begge. Temperaturintervallet bruges af motoren til at afvise fysisk umulige matches, før de når jer.
Trin 3: Tilbud, behov og handel 5 minutter
En sælger lægger et tilbud på bogen: volumen, temperatur, periode og laveste pris. En køber lægger et behov: volumen, laveste fremløbstemperatur, periode og højeste pris. Er kilden koldere end behovet, angiver den part, der løfter temperaturen, sin løfteomkostning pr. MWh, så prisen sammenlignes på leveret varme.
curl -X POST https://api.celembi.dk/api/v2/demands \
-H "X-API-Key: $CELEMBI_API_KEY" -H "Content-Type: application/json" \
-d '{
"tenant_id": "jeres-organisation",
"entity_id": "ent_...",
"volume_mwh_needed": "400.000",
"min_temperature": 70.0,
"needed_from": "2026-11-01T00:00:00Z",
"needed_to": "2026-11-30T23:59:59Z",
"max_price_dkk": "320.00"
}'
Motoren søger bogen med det samme. Passer et tilbud på temperatur, periode, afstand og pris, foreslås en handel til begge parter. Prisen ligger altid inden for de grænser, I selv har sat: aldrig under sælgers mindstepris, aldrig over købers maksimum. Forslaget er ikke en handel, før det er accepteret i portalen eller via POST /api/v2/deals/{id}/accept; kun handlens to parter kan acceptere eller afvise, og et forslag, der ikke besvares inden fristen, udløber af sig selv, hvorefter tilbuddet er åbent igen.
Vil I se, om en ordre overhovedet kan leveres, før I lægger den ud, tjekker POST /api/v2/physics/preflight den mod rørets fysik og svarer med, hvad der binder.
Trin 4: Aflæsninger og afregning 10 minutter
Når leveranceperioden er slut, indsender begge parter deres målte volumen for handlen. Det er de to tal, afregningen bygger på; Celembi læser ikke jeres måler. Der er tre veje, og de kan blandes frit:
Portalen, pr. handel
Under Handler: tryk Indsend måleraflæsning på handlen, indtast tallet. Ingen IT.
CSV, hele måneden
Hent skabelonen med jeres leverancer under Handler, udfyld én kolonne fra jeres afregningssystem, upload. Kommatal og GJ er fint.
API, hele måneden
Ét kald med op til 200 aflæsninger. Hver række behandles for sig, så én fejl aldrig stopper de andre.
curl -X POST https://api.celembi.dk/api/v2/deals/meter-readings \
-H "X-API-Key: $CELEMBI_API_KEY" -H "Content-Type: application/json" \
-d '{
"readings": [
{ "deal_id": "…", "entity_id": "ent_…", "metered_volume_mwh": "398.250", "meter_id": "M-1042" },
{ "deal_id": "…", "entity_id": "ent_…", "metered_volume": "1433.7", "metered_volume_unit": "gj" }
]
}'
Svaret har ét resultat pr. række med success og, ved fejl, en kode I kan handle på (ukendt handel, allerede afregnet, forkert enhed). Genindsend kun de rækker, der fejlede.
Reglerne, der gælder for alle tre veje
- To aflæsninger, én afregning. Når den anden aflæsning er inde, afregnes handlen automatisk: leveret volumen, aftalt pris, afgifter og Celembis 5 % af sælgers bruttoværdi. Køber betaler intet til Celembi.
- Tab i røret. Handlen bærer sin egen tabsandel fra matchningen, så en forskel mellem sælgers og købers måler, der svarer til tabet, er ikke en afvigelse.
- Afvigelse over 5 %. Afviger de to aflæsninger mere end 5 % ud over tabet, afregnes der ikke automatisk. Handlen markeres til afklaring, og begge parter får besked.
- 48 timers frist. Mangler en aflæsning 48 timer efter periodens udløb, afregnes der på den aflæsning, der findes. Mangler begge, udløber leverancen uden afregning. I får en påmindelse, mens fristen løber.
- Enheder. MWh, GJ eller kWh; Celembi regner om (1 GJ = 0,278 MWh) og afregner i MWh med tre decimaler.
Webhooks 5 minutter
Angiver I en webhook_url på enheden eller på den enkelte ordre, sender Celembi et HTTPS POST, når der sker noget i en handel, I er part i. Adressen skal være offentlig og køre HTTPS.
| Hændelse | Hvornår |
|---|---|
deal.proposed | Motoren har fundet et match og foreslår en handel til jer |
deal.accepted, deal.executed | Modparten har accepteret; begge har accepteret, og leverancen er oprettet |
deal.rejected | Forslaget er afvist |
meter.submitted | En aflæsning er registreret på en af jeres handler |
meter.reminder | Periode udløbet, jeres aflæsning mangler |
delivery.settled, delivery.expired | Afregnet med fuldt beløb i kaldet, eller udløbet uden aflæsninger |
Kaldets krop er {"event_type": "...", "timestamp": "...", "data": {...}}, hvor data er et øjebliksbillede af handlen eller leverancen. Headeren X-Celembi-Signature bærer en HMAC-SHA256 over <t>.<krop> i formatet t=<tidsstempel>,v1=<hex>. Signeringsnøglen er jeres egen: den står under Indstillinger i portalen (ejeren kan vise og rotere den), og ingen anden partner kan lave et kald, der består jeres kontrol. Afvis kald ældre end fem minutter og sammenlign i konstant tid.
GET /api/v2/deals/{id}/delivery. Så er I aldrig afhængige af, at hvert kald nåede frem.
Foretrækker I at trække frem for at få skubbet, lister GET /api/v2/deals?tenant_id=… og GET /api/v2/deliveries alt, hvad der er sket, og GET /api/v2/stream giver de samme hændelser som en løbende strøm.
Hvad I får tilbage
Alt, der er afregnet, findes som dokumentation, I kan hente uden at spørge nogen:
- Afregningen for handlen:
GET /api/v2/deals/{id}/invoice-preview, med leveret volumen, pris, afgifter og gebyr linje for linje. Ordrebekræftelsen ligger som udskriftsklar HTML fra det øjeblik, handlen er accepteret. - ESG- og revisionsrapporten pr. handel:
GET /api/v2/deals/{id}/esg-report, deterministisk beregnet af de samme tal som afregningen, med fortrængt brændsel og CO2. - Månedsrapporten pr. enhed:
GET /api/v2/entities/{id}/monthly-evidence-report, som JSON eller udskriftsklar HTML. Den er skrevet til EED artikel 26 og CSRD/ESRS E1: hvad der blev leveret, hvorfra, og hvad det erstattede. - Hele historikken som fil:
GET /api/v2/export/deals.csveller.json, også fra portalen med ét klik.
Tallene er de samme alle steder, fordi de kommer fra samme afregning. Celembi er ikke en revisionsvirksomhed, men laget, revisor kan læse ud af; sådan efterprøves evidensen.
Rammer og sikkerhed
- Adskillelse
- Nøglen ser kun jeres organisation. Modparten ser kun de handler, I deler, og aldrig jeres øvrige ordrer.
- Kaldsgrænse
- 60 kald pr. minut pr. nøgle med plads til korte spidser. Svaret bærer headere med, hvad der er tilbage, og et 429 siger, hvor længe I skal vente. En måneds aflæsninger er ét kald.
- Gentagne kald
- Sender I en ny aflæsning på samme handel, før modparten har indsendt sin, erstatter den jeres tidligere; efter afregning afvises nye aflæsninger med en kode, aldrig med en dobbelt afregning. Mod netværksfejl bærer alle skrivende kald headeren
Idempotency-Key: samme nøgle giver samme svar uden at køre igen. - Data
- Jeres tal er jeres. Celembi bruger dem til at matche, afregne og dokumentere jeres handler, og til anonyme markedstal (antal og volumen, aldrig navne eller priser pr. part). Databehandleraftale og opbevaring: se privatlivspolitikken.
- Drift
- Kørende i EU, adgang via Microsoft-login, revisionsspor med
request_idpå alle kald. Detaljer under Sikkerhed. - Det, Celembi ikke gør
- Ingen styring af anlæg, ingen adgang til SCADA, ingen forhandling uden mennesker. Projektering, hydraulik og myndighedsgodkendelse bliver hos jeres rådgiver; beregneren eksporterer en datapakke til dem.
Den fulde API-reference med alle felter og eksempler ligger i dokumentationen. Vil I have os med på det første kald, tager et onboarding-møde en halv time.
API-reference Book onboarding