API-integration for revisionsfirmaer
Lær, hvordan dit revisionsfirma integrerer LegalDocks API og begynder at generere juridiske dokumenter programmatisk. Guide med curl og TypeScript.
Karoline, Dokumentkonsulent
Moderne revisionsfirmaer digitaliserer i stigende grad. Klienter forventer hurtige svar, og de interne systemer, fra bogholderisoftware til klientportaler, skal hænge bedre sammen. Juridiske dokumenter er det næste led i den digitale kæde.
LegalDocks API giver revisionsfirmaer mulighed for at generere, udfylde og sende juridiske dokumenter programmatisk, direkte fra jeres eget system. Ingen manuel kopiering, ingen forældede Word-skabeloner og ingen printede underskrifter.
Denne guide viser dig, hvordan du integrerer LegalDock API.
Hvad kan LegalDock API?
LegalDocks REST API giver adgang til:
| Funktion | Beskrivelse |
|---|---|
| Dokumentgenerering | Udfyld en skabelon med felter og modtag en færdig PDF |
| Digital underskrift | Send dokumentet til underskrift via MitID |
| Webhooks | Modtag events, når dokumentet underskrives, afvises eller udløber |
| Skabelonliste | Hent alle tilgængelige skabeloner og feltbeskrivelser |
| Dokumentarkiv | Hent, download og administrér oprettede dokumenter |
Alle kald sker over HTTPS. Autentificering bruger API-nøgler (Bearer token). Rate limits afhænger af din plan.
Forudsætninger
Inden du begynder:
- LegalDock Partner-konto med API-adgang
- API-nøgle, som hentes under Indstillinger, API, Generér nøgle
- HTTP-klient,
curltil test og Node.js 18+ til TypeScript-eksemplerne
Trin 1: Verificer forbindelsen
curl https://api.legaldock.org/v1/ping \
-H "Authorization: Bearer DIN_API_NOEGLE"
Forventet svar:
{ "status": "ok", "version": "1.0" }
En 401 Unauthorized-fejl betyder, at API-nøglen er ugyldig eller udløbet. Generér en ny under Indstillinger.
Trin 2: Hent tilgængelige skabeloner
curl https://api.legaldock.org/v1/templates \
-H "Authorization: Bearer DIN_API_NOEGLE"
{
"templates": [
{ "id": "ansaettelseskontrakt", "name": "Ansaettelseskontrakt" },
{ "id": "nda-standard", "name": "NDA Fortrolighedsaftale" },
{ "id": "lejekontrakt-erhverv", "name": "Erhvervslejekontrakt" },
{ "id": "aktionaeroverenskomst", "name": "Aktionaeroverenskomst" },
{ "id": "konsulentaftale", "name": "Konsulentaftale" }
]
}
Inspicér en skabelon for at se feltlisten:
curl https://api.legaldock.org/v1/templates/nda-standard \
-H "Authorization: Bearer DIN_API_NOEGLE"
Trin 3: Generér et dokument
curl -X POST https://api.legaldock.org/v1/documents \
-H "Authorization: Bearer DIN_API_NOEGLE" \
-H "Content-Type: application/json" \
-d '{
"templateId": "nda-standard",
"fields": {
"part1Navn": "TechStart ApS",
"part2Navn": "Udvikler A/S",
"formaal": "Droeftelse af muligt teknologisamarbejde",
"varighed": "2 aar",
"dato": "2026-06-01"
},
"meta": {
"reference": "klient-456-nda-2026"
}
}'
Svar:
{
"documentId": "doc_xyz789",
"status": "draft",
"downloadUrl": "https://api.legaldock.org/v1/documents/doc_xyz789/pdf",
"previewUrl": "https://app.legaldock.org/preview/doc_xyz789"
}
Tip: Brug meta.reference til at gemme jeres interne klient- eller sagsnummer. Det gør det muligt at finde dokumentet fra jeres eget system og koble API-svaret til den rigtige klientjournal.
Trin 4: Anmod om digital underskrift
curl -X POST https://api.legaldock.org/v1/documents/doc_xyz789/sign \
-H "Authorization: Bearer DIN_API_NOEGLE" \
-H "Content-Type: application/json" \
-d '{
"signers": [
{ "name": "Klaus Jensen", "email": "kj@techstart.dk", "role": "party1" },
{ "name": "Sara Holm", "email": "sh@udvikler-as.dk", "role": "party2" }
],
"deadline": "2026-06-15",
"notifyOnSigned": "webhook",
"webhookUrl": "https://jeres-system.dk/webhooks/legaldock"
}'
LegalDock sender e-mail til begge parter med et signeringslink. Begge underskriver via MitID på desktop eller mobil.
TypeScript-integration
Eksempel på en genbrugelig hjælpeklasse til Node.js og TypeScript:
// src/legaldock.ts
const BASE = 'https://api.legaldock.org/v1';
interface CreateDocumentPayload {
templateId: string;
fields: Record<string, string | number>;
reference: string;
}
interface Signer {
name: string;
email: string;
role: string;
}
export async function createDocument(
apiKey: string,
payload: CreateDocumentPayload
): Promise<{ documentId: string; downloadUrl: string }> {
const res = await fetch(`${BASE}/documents`, {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
templateId: payload.templateId,
fields: payload.fields,
meta: { reference: payload.reference },
}),
});
if (!res.ok) {
const { message } = await res.json() as { message: string };
throw new Error(`LegalDock createDocument: ${message}`);
}
return res.json() as Promise<{ documentId: string; downloadUrl: string }>;
}
export async function requestSignature(
apiKey: string,
documentId: string,
signers: Signer[],
webhookUrl: string,
deadline?: string
): Promise<{ signingSessionId: string }> {
const res = await fetch(`${BASE}/documents/${documentId}/sign`, {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
signers,
deadline,
notifyOnSigned: 'webhook',
webhookUrl,
}),
});
if (!res.ok) {
const { message } = await res.json() as { message: string };
throw new Error(`LegalDock requestSignature: ${message}`);
}
return res.json() as Promise<{ signingSessionId: string }>;
}
Integrér i din eksisterende kodebase:
import { createDocument, requestSignature } from './src/legaldock';
const API_KEY = process.env.LEGALDOCK_API_KEY!;
const WEBHOOK = process.env.LEGALDOCK_WEBHOOK_URL!;
// Kaldt naar revisor onboarder ny klient-medarbejder
export async function issueEmploymentContract(
employeeName: string,
employeeEmail: string,
employerName: string,
employerEmail: string,
startDate: string,
monthlySalary: number,
clientRef: string
) {
const doc = await createDocument(API_KEY, {
templateId: 'ansaettelseskontrakt',
fields: {
medarbejdernavn: employeeName,
virksomhedsnavn: employerName,
startdato: startDate,
maanedsloen: monthlySalary,
arbejdssted: 'Se separat bilag',
},
reference: clientRef,
});
await requestSignature(
API_KEY,
doc.documentId,
[
{ name: employeeName, email: employeeEmail, role: 'employee' },
{ name: employerName, email: employerEmail, role: 'employer' },
],
WEBHOOK,
'2026-07-01'
);
return doc.documentId;
}
Webhooks: modtag events automatisk
Undgå manuel polling, og brug webhooks til at opdatere jeres system, når dokumenter underskrives.
// Express webhook handler
import express from 'express';
import crypto from 'crypto';
const router = express.Router();
router.post('/webhooks/legaldock', express.json(), (req, res) => {
const sig = req.headers['x-legaldock-signature'] as string;
const expected = crypto
.createHmac('sha256', process.env.LEGALDOCK_WEBHOOK_SECRET!)
.update(JSON.stringify(req.body))
.digest('hex');
if (sig !== expected) {
return res.status(401).json({ error: 'Invalid signature' });
}
const { event, documentId, reference } = req.body as {
event: string;
documentId: string;
reference: string;
};
if (event === 'document.signed') {
// Opdater klientjournal, send bekraeftelse, arkiver PDF
console.log(`Underskrevet: ${documentId} (klient ref: ${reference})`);
}
res.json({ ok: true });
});
export default router;
Bedste praksis for revisionsfirmaer
Brug sandbox til test. Hvis LegalDock tilbyder et sandbox-miljø, så brug det under integrationen, så testdokumenter ikke tæller mod kvoten og ikke sender rigtige e-mails.
Gem altid PDF lokalt. Download og arkivér PDF-filen i jeres eget system straks efter underskrift. Brug downloadUrl fra API-svaret.
Sæt en deadline på underskriftsanmodninger. En NDA, der ikke underskrives i tide, skaber forvirring. Brug deadline-feltet til forventningsafstemning.
Overvåg fejlrate. Log alle API-kald, og overvåg 4xx- og 5xx-svar. En pludselig stigning i 429-fejl (rate limit) signalerer, at I skal opgradere planen eller implementere backoff.
Fejlhåndtering: referencetabel
| HTTP-kode | Årsag | Løsning |
|---|---|---|
| 400 | Ugyldige felter | Tjek feltnavne mod skabelonens specifikation |
| 401 | Ugyldig API-nøgle | Generér en ny nøgle under Indstillinger |
| 403 | Planbegrænsning | Opgradér din plan |
| 404 | Ressource ikke fundet | Tjek templateId eller documentId |
| 429 | Rate limit | Implementér exponential backoff |
| 500 | Serverfejl | Kontakt LegalDock-support |
Klar til at integrere?
Opret en partnerkonto med API-adgang, generér din API-nøgle under indstillingerne, og læs den fulde API-reference i LegalDocks dokumentation, inden du går i gang. Har du brug for hjælp, kan du kontakte partnersupport.
Denne guide er teknisk vejledning og udgør ikke juridisk rådgivning. Kontakt en advokat for rådgivning om de dokumenter, du genererer.
Indholdet i denne artikel er vejledende og udgør ikke individuel juridisk rådgivning. LegalDocks dokumenter er skabeloner — kontakt en advokat ved tvivl om din konkrete situation.