Todai Contracts

API-dokumentation

Et offentligt REST-API til kontrakter, skabeloner, kunder, workspaces og brugere. Samme data som i appen — hentet med en nøgle, I selv styrer.

Kom i gang

Alle kald går til det samme grundlag og svarer med JSON. Send din nøgle som en Bearer-token i Authorization-headeren.

Grundadresse: https://contracts.todai.ai/api/public/v1

curl "https://contracts.todai.ai/api/public/v1/contracts?limit=5" \
  -H "Authorization: Bearer tdk_din_nøgle"

Alle endepunkter understøtter OPTIONS til CORS-preflight, som svarer 204 uden autentificering.

Nøgler og scopes

Nøgler oprettes i appen under Indstillinger → API-nøgler og begynder med tdk_. En nøgle kan aldrig se mere end den bruger, der oprettede den. Den kan begrænses til bestemte workspaces og få en udløbsdato, og du vælger selv hvilke scopes den har.

ScopeGiver adgang til
contracts:readLæs kontrakter og enkelt-kontrakt
contract_content:readLæs kontraktens sektioner, parter og fulde tekst
signatures:readLæs underskrivere og deres status
audit:readLæs revisionsspor for en kontrakt
customers:readLæs kunder
templates:readLæs skabeloner og skabelonsektioner
workspaces:readLæs workspaces og medlemmer
users:readLæs brugere og roller
users:writeOpret eller opdater brugere på @todai.ai

Kontrakter

Hent listen af kontrakter, en enkelt kontrakt med indhold, den fulde tekst eller hele revisionssporet.

GET/contracts

Liste kontrakter

Returnerer kontrakter sorteret efter oprettelsestidspunkt, nyeste først.

Kræver scope contracts:read

ParameterType
limitheltal
searchtekst
statustekst

Svar: { contracts: ContractSummary[] }

curl "https://contracts.todai.ai/api/public/v1/contracts?status=signed&limit=20" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403, 500

GET/contracts/{id}

Hent én kontrakt

Svaret udvides efter nøglens øvrige scopes: signatures:read giver signers, og contract_content:read giver sections og parties.

Kræver scope contracts:read

Svar: { contract, signers?, parties?, sections? }

curl "https://contracts.todai.ai/api/public/v1/contracts/4f0c…" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403, 404, 500

GET/contracts/{id}/text

Hent kontraktens fulde tekst

Importerede PDF'er har typisk indholdet i text. Kontrakter bygget i Todai har også body_html.

Kræver scope contract_content:read

Svar: { id, title, text, chars, body_html }

curl "https://contracts.todai.ai/api/public/v1/contracts/4f0c…/text" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403, 404

GET/contracts/{id}/audit

Revisionsspor for kontrakten

Op til 200 hændelser, nyeste først. API'et returnerer hele sporet — også hændelser der er skjult i brugerfladen.

Kræver scope audit:read

Svar: { events: AuditEvent[] }

curl "https://contracts.todai.ai/api/public/v1/contracts/4f0c…/audit" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403, 404

Kunder

Kundekartoteket, inklusive HubSpot-id og seneste work order-nummer.

GET/customers

Liste kunder

Returnerer alle kunder som nøglen har adgang til.

Kræver scope customers:read

Svar: { customers: Customer[] }

curl "https://contracts.todai.ai/api/public/v1/customers" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403, 500

Skabeloner

Skabelonbiblioteket og de sektioner en skabelon består af.

GET/templates

Liste skabeloner

Returnerer alle skabeloner som nøglen har adgang til.

Kræver scope templates:read

Svar: { templates: Template[] }

curl "https://contracts.todai.ai/api/public/v1/templates" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403

GET/templates/{id}

Hent skabelon med sektioner

Skabelonen og dens sektioner i rækkefølge, med angivelse af hvilke der er med som standard.

Kræver scope templates:read

Svar: { template, sections: TemplateSection[] }

curl "https://contracts.todai.ai/api/public/v1/templates/9ab1…" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403, 404

Workspaces

Workspaces og deres medlemmer med rolle og eneunderskriftsret.

GET/workspaces

Liste workspaces med medlemmer

Hvert workspace indeholder listen af medlemmer med rolle og can_sign_alone.

Kræver scope workspaces:read

Svar: { workspaces: Workspace[] }

curl "https://contracts.todai.ai/api/public/v1/workspaces" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403

Brugere

Læs brugere og roller — og opret eller opdater brugere på jeres eget domæne.

GET/users

Liste brugere med roller

Returnerer brugere med profil og tildelte roller (admin, editor, viewer).

Kræver scope users:read

Svar: { users: User[] }

curl "https://contracts.todai.ai/api/public/v1/users" \
  -H "Authorization: Bearer tdk_…"

Mulige fejl: 401, 403

POST/users

Opret eller opdater en bruger

Findes brugeren ikke, oprettes den, og der sendes en invitationsmail (svar 201). Findes den i forvejen, opdateres profil og rolle uden ny mail (svar 200). Brugeren bliver ikke automatisk medlem af et workspace.

Kræver scope users:write

Felt i bodyType
emailtekst, påkrævet
full_nametekst
phonetekst
avatar_urltekst
roleadmin | editor | viewer

Svar: { id, email, role, created }

curl -X POST "https://contracts.todai.ai/api/public/v1/users" \
  -H "Authorization: Bearer tdk_…" \
  -H "Content-Type: application/json" \
  -d '{"email":"ny@todai.ai","full_name":"Ny Kollega","role":"editor"}'

Mulige fejl: 400, 401, 403, 500

Fejl

Fejl returneres altid som { "error": "…" }. Har nøglen ikke adgang til en bestemt kontrakt, svarer vi 404 frem for 403 — så en nøgle ikke kan bruges til at afsløre, at kontrakten findes.

KodeBetydning
400Ugyldig JSON, eller validering af felterne fejlede.
401Nøglen mangler, er ugyldig, udløbet eller tilbagekaldt.
403Nøglen findes, men mangler det krævede scope.
404Ressourcen findes ikke — eller er ikke tilgængelig for nøglen.
500Serverfejl. Prøv igen, og kontakt os hvis den bliver ved.

Datamodeller

Felterne herunder går igen på tværs af endepunkterne. Tidspunkter er ISO 8601 i UTC.

ContractSummary

FeltType
iduuid
titletekst | null
statustekst
typetekst | null
languagetekst | null
directiontekst | null
customer_nametekst | null
hubspot_customer_idtekst | null
work_order_numbertekst | null
customer_initialstekst | null
workspace_iduuid | null
owner_iduuid | null
valid_untildato | null
sent_attidspunkt | null
signed_attidspunkt | null
created_attidspunkt
updated_attidspunkt

Contract

FeltType
alle felter fra ContractSummary
hubspot_deal_idtekst | null
hubspot_deal_nametekst | null

Signer

FeltType
iduuid
kindtekst
full_nametekst | null
emailtekst | null
titletekst | null
sort_orderheltal
signed_attidspunkt | null
rejected_attidspunkt | null
withdrawn_attidspunkt | null

Party

FeltType
iduuid
nametekst | null
roletekst | null
addresstekst | null
cvrtekst | null
sort_orderheltal

ContractSection

FeltType
iduuid
titletekst | null
bodyHTML | null
sort_orderheltal
includedboolsk
parent_section_iduuid | null

AuditEvent

FeltType
iduuid
actiontekst
actor_nametekst | null
actor_emailtekst | null
detailsobjekt | null
created_attidspunkt

Customer

FeltType
iduuid
hubspot_customer_idtekst | null
customer_nametekst | null
initialstekst | null
domaintekst | null
workspace_iduuid | null
last_work_order_numberheltal | null
updated_attidspunkt

Template

FeltType
iduuid
nametekst
descriptiontekst | null
languagetekst | null
typetekst | null
generatortekst | null
workspace_iduuid | null
owner_iduuid | null
created_attidspunkt
updated_attidspunkt

TemplateSection

FeltType
iduuid
titletekst | null
bodyHTML | null
sort_orderheltal
is_default_includedboolsk
parent_section_iduuid | null

Workspace

FeltType
iduuid
nametekst
slugtekst | null
descriptiontekst | null
sort_orderheltal | null
created_attidspunkt
membersWorkspaceMember[]

WorkspaceMember

FeltType
workspace_iduuid
user_iduuid
roletekst | null
can_sign_aloneboolsk

User

FeltType
iduuid
emailtekst | null
full_nametekst | null
avatar_urltekst | null
phonetekst | null
rolesliste af admin | editor | viewer

Kom i gang med Todai Contracts

Opret en konto og send din første kontrakt i dag.