Forsiden

Celembi · senest gennemgået 29. sep. 2026

Integration på 30 minutter

Celembi rører ikke jeres anlæg: ingen SCADA-kobling, ingen adgang til jeres OT-net og intet, der skal installeres. Det, der skal ind, er tal, I allerede har. Portalen klarer hele forløbet uden kode, og API'et er til jer, der vil koble jeres eget system på.

Kort fortalt

Hvad det er
En markedsplads for overskudsvarme. Celembi matcher og dokumenterer, er ikke part i handlen og holder aldrig partnernes midler.
Hvad det kræver
Tal, I allerede har: hvad I kan levere eller har brug for, og hvad måleren viste. Ingen IT hos jer, hvis I bruger portalen; en Microsoft-konto og et CVR-nummer er nok til at komme i gang.
Hvad det koster
Celembis gebyr er 5 % af bruttoværdien og betales af sælger. Køber betaler intet gebyr til Celembi. Procentsatsen står på Priser.
Hvem der siger ja
Den, der opretter organisationen, accepterer vilkårene. Et handelsforslag er ikke en handel, før begge parter har accepteret det.
Prisen
Prisen ligger mellem sælgers mindstepris og købers maksimalpris. Købers maksimum er dens egen alternative varme, substitutionsprisen, og den regnes måned for måned. Regnestykket står på evidenssiden.
Dokumentation
Afregning, ESG-rapport og en månedsrapport pr. anlæg, alle regnet af de samme tal og hentet uden at spørge nogen. Ingen garanti for, hvad en revisor eller en myndighed godtager, men hvert tal kan efterregnes.

Den korte version

  1. Log ind med jeres Microsoft-konto, opret organisationen og lav en API-nøgle. Alt kan også gøres i portalen uden kode.
  2. Registrér jeres anlæg (varmekilde eller net) og læg et tilbud eller et behov på bogen. Motoren matcher og foreslår en handel, I accepterer.
  3. 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

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: den opretter og handler kun for jer, og listerne over anlæg, ordrer og handler viser kun jeres egne. Markedets ordrebog er åben, så kortet (GET /api/v2/map) viser enhver nøgle alle partneres anlæg og åbne ordrer med pris, også jeres; se rammer og sikkerhed. Mist I nøglen, tilbagekalder I den og laver en ny; intet andet ændrer sig.

GET /api/v2/admin/me
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 anlæg 5 minutter

Et anlæg er det, der leverer eller modtager varmen: et datacenter, en fabrik, en køleproces, eller fjernvarmenettet. Anlægget registreres én gang og bruges i alle ordrer og handler. Det er nemmest i portalen under Anlæg; via API ser det sådan ud for et net, der køber:

POST /api/v2/entities
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": "Eksempel Fjernvarme A/S, hovednettet",
    "roles": ["buyer"],
    "heat_source_type": "district_heating_utility",
    "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://partner.example/celembi",
    "terms_accepted": true
  }'

Svaret indeholder entity_id, som alle senere kald peger på; feltet hedder sådan i API'et og er anlæggets id. 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 mindstepris. En køber lægger et behov: volumen, laveste fremløbstemperatur, periode og maksimalpris. Er kilden koldere end behovet, angiver den part, der løfter temperaturen, sin løfteomkostning pr. MWh, så prisen sammenlignes på leveret varme.

POST /api/v2/demands
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 maksimalpris. 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.

POST /api/v2/deals/meter-readings
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 anlæg). Genindsend kun de rækker, der fejlede.

Reglerne, der gælder for alle tre veje

Webhooks 5 minutter

Angiver I en webhook_url på anlægget 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ændelseHvornår
deal.proposedMotoren har fundet et match og foreslår en handel til jer
deal.accepted, deal.executedModparten har accepteret; begge har accepteret, og leverancen er oprettet
deal.rejectedForslaget er afvist
meter.submittedEn aflæsning er registreret på en af jeres handler
meter.reminderPeriode udløbet, jeres aflæsning mangler
delivery.settled, delivery.expiredAfregnet 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.

Byg det robust. Svar 2xx med det samme og behandl bagefter. Celembi venter 5 sekunder og prøver tre gange med stigende pause; derefter opgives kaldet, men handlen står stadig i Celembi. Behandl derfor et webhook som en besked om, at noget skete, og hent den gældende tilstand med jeres nøgle: 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:

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 evidenspakken.

Rammer og sikkerhed

Adskillelse
Nøglen handler kun for jeres organisation. Jeres åbne ordrer står med anlæg, mængde og pris i markedets ordrebog, som alle partnere kan se. Ingen partner uden for en handel ser dens vilkår.
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_id på alle kald. Detaljer under Sikkerhed.
Det, Celembi ikke gør
Celembi er en markedsplads og ikke part i handlen, og holder aldrig partnernes midler. 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 møde 30 minutter på Teams.

Siden følger API'et: når en regel i afregningen ændres, opdateres den her og i dokumentationen samtidig. Senest gennemgået 29. september 2026. Spørgsmål: kontakt@celembi.dk.