Snabbstart
Base URL: https://tidvis.se/api/public/v1. Alla anrop använder JSON. Public API är en del av Enterprise-planen.
- 1. Skapa en API-klient under Sign → Inställningar → API och spara
client_idochclient_secret. - 2. Hämta en
access_tokenvia OAuth2 client credentials. - 3. Skapa ett avtal, ladda upp en PDF, lägg till deltagare och skicka.
curl -X POST https://tidvis.se/api/public/v1/oauth/access-token \
-H "Content-Type: application/json" \
-d '{"client_id":"tvc_...","client_secret":"tvs_..."}'Autentisering
OAuth2 client credentials. Du byter client_id+client_secret mot en JWT som är giltig i 1 timme. Skicka Authorization: Bearer <access_token> på alla efterföljande anrop.
/oauth/access-tokenHämta en access token (1h TTL).
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 3600,
"expires_at": "2026-06-07T13:00:00.000Z"
}/oauth/access-tokenÅterkalla den aktuella token (kräver Authorization-header).
Avtal
/agreementsSkapa ett avtals-utkast (status: draft).
curl -X POST https://tidvis.se/api/public/v1/agreements \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Anställningsavtal Anna","expires_in_days":14}'/agreementsLista avtal. Stödjer ?status, ?limit, ?cursor.
/agreements/:idHämta ett avtal med deltagare och status.
/agreements/:id/eventsAudit-trail (sent, viewed, signed, completed...).
/agreements/:id/downloadHämta signerad PDF (returnerar signed URL eller binärt innehåll).
Deltagare
/agreements/:id/participantsLägg till en signatär (utkast-status).
{
"name": "Anna Andersson",
"email": "anna@example.com",
"role": "signer"
}PDF-dokument
/agreements/:id/documents/mainLadda upp huvuddokument. Stöd för application/pdf (binärt) eller JSON med base64.
# JSON / base64
curl -X PUT https://tidvis.se/api/public/v1/agreements/$ID/documents/main \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"filename":"avtal.pdf","content_base64":"JVBERi0..."}'
# Eller binärt
curl -X PUT https://tidvis.se/api/public/v1/agreements/$ID/documents/main \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/pdf" \
--data-binary @avtal.pdfLivscykel
/agreements/:id/lifecycleSkicka eller avbryt ett avtal.
{"action": "send"} // eller "cancel"Webhooks
Tidvis levererar händelser till din URL via POST med JSON. Varje request är signerad med HMAC-SHA256 i headern X-Tidvis-Signature: sha256=<hex> baserat på din signing_secret och raw body. Vi retryar misslyckade leveranser med exponentiell backoff i upp till 24h.
/webhooksRegistrera en webhook.
{
"client_id": "<api_client uuid>",
"url": "https://din-app.se/webhooks/tidvis",
"events": ["agreement.sent","agreement.signed","agreement.completed"]
}/webhooksLista registrerade webhooks.
/webhooks/:idTa bort en webhook.
Händelser
agreement.sentagreement.viewedagreement.signedagreement.completedagreement.cancelledagreement.expired
Verifiera signatur (Node.js)
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(rawBody, header, secret) {
const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
const given = (header || "").replace(/^sha256=/, "");
return timingSafeEqual(Buffer.from(expected), Buffer.from(given));
}Felkoder
| HTTP | Code | Betydelse |
|---|---|---|
| 400 | invalid_request | Felaktig input. |
| 401 | unauthorized | Saknad/ogiltig token. |
| 402 | plan_required | Kontot saknar Enterprise-plan. Innehåller upgrade_url. |
| 403 | forbidden | Saknar rättighet till resursen. |
| 404 | not_found | Resursen hittades inte. |
| 409 | conflict | Ogiltigt tillståndsbyte (t.ex. skicka redan skickat). |
| 429 | rate_limited | För många anrop. |
| 500 | server_error | Serverfel – försök igen. |
Rate limits
Standardgräns: 60 requests/minut per klient och 600/timme för uppladdningar. Vid överskridning får du 429 rate_limited med Retry-After-header. Behöver du mer? Kontakta oss.