Inkr API

Inkr API

API REST de signature électronique européenne, eIDAS SES, hébergement UE, pricing dégressif sans engagement.

Intègre la signature électronique dans ton SaaS en quelques heures. Inkr expose une API REST conforme eIDAS Simple Electronic Signature, avec un audit trail PDF inclus, hébergée en Union européenne, sans abonnement ni minimum mensuel.

Démarrer

Explorer les endpoints

Premières lignes de code

Voici comment créer une submission à partir d'un PDF inline. Snippet complet avec headers requis (Authorization et Idempotency-Key) :

curl -X POST https://api.getinkr.eu/v1/submissions/from_pdf \
  -H "Authorization: Bearer sk_test_xxx..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "documents": [{ "name": "Contrat", "pdf_base64": "JVBERi0..." }],
    "submitters": [{
      "role": "Signataire",
      "email": "alice@example.com",
      "fields": [{
        "name": "signature",
        "type": "signature",
        "areas": [{ "page": 0, "x": 0.5, "y": 0.9, "w": 0.3, "h": 0.05 }]
      }]
    }],
    "send_email": true
  }'
import { randomUUID } from 'node:crypto'

const res = await fetch('https://api.getinkr.eu/v1/submissions/from_pdf', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.INKR_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': randomUUID(),
  },
  body: JSON.stringify({
    documents: [{ name: 'Contrat', pdf_base64: pdfBase64 }],
    submitters: [{
      role: 'Signataire',
      email: 'alice@example.com',
      fields: [{
        name: 'signature',
        type: 'signature',
        areas: [{ page: 0, x: 0.5, y: 0.9, w: 0.3, h: 0.05 }],
      }],
    }],
    send_email: true,
  }),
})
const submission = await res.json()
console.log(submission.id)
require 'net/http'
require 'securerandom'
require 'json'
require 'base64'

pdf_base64 = Base64.strict_encode64(File.read('contrat.pdf'))

uri = URI('https://api.getinkr.eu/v1/submissions/from_pdf')
req = Net::HTTP::Post.new(uri)
req['Authorization'] = "Bearer #{ENV['INKR_API_KEY']}"
req['Content-Type'] = 'application/json'
req['Idempotency-Key'] = SecureRandom.uuid
req.body = JSON.generate({
  documents: [{ name: 'Contrat', pdf_base64: pdf_base64 }],
  submitters: [{
    role: 'Signataire',
    email: 'alice@example.com',
    fields: [{
      name: 'signature',
      type: 'signature',
      areas: [{ page: 0, x: 0.5, y: 0.9, w: 0.3, h: 0.05 }],
    }],
  }],
  send_email: true,
})

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) }
puts JSON.parse(res.body)['id']

Tous les POST mutants exigent un header Idempotency-Key (UUID v4 recommandé). Inkr cache la réponse 24h : retry avec la même clé replay la même réponse sans facturer deux fois.

Pricing dégressif

Tu démarres à 0,20 € par signature et plus tu signes moins tu paies. Aucun palier contractuel, aucun minimum mensuel, aucun abonnement.

Volume mensuelPrix par signature
0 à 5000,20 €
501 à 2 5000,18 €
2 501 à 10 0000,17 €
10 001 à 50 0000,16 €
50 000 et plus0,15 € + contact sales

Le prix s'applique au volume total du mois calculé à la facturation. Exemple : 3 000 signatures dans le mois facturées 3 000 × 0,17 € = 510 €.

Conformité et hébergement

  • eIDAS SES au sens du règlement européen 910/2014. Recevable devant les tribunaux européens.
  • Audit trail PDF téléchargeable via GET /v1/submissions/{id}/audit_log avec IPs, user-agents, hash SHA-256 et horodatages UTC.
  • Hébergement Union européenne, conforme RGPD strict. Aucune exposition au CLOUD Act américain.
  • DPA disponible sur demande commerciale.