Skip to main content

opacte — SDK Python de l'API Opacte

Attestez, vérifiez et faites signer des documents depuis votre logiciel, sans captcha ni code. Comme sur opacte.eu, le document ne quitte jamais votre serveur en clair : pour une attestation, Opacte n'en garde que les empreintes, et la preuve est ancrée dans Bitcoin ; pour une signature, le SDK le chiffre chez vous et la clé ne vient jamais chez Opacte.

Installation

pip install opacte

Python 3.10 ou plus. Créez un compte sur opacte.eu, puis une clé API dans Réglages, et rendez-la disponible dans la variable d'environnement OPACTE_API_KEY (jamais dans votre code).

Exemple

from opacte import Client, CreditsInsuffisants

client = Client()  # clé lue dans OPACTE_API_KEY
print(client.compte().solde)

# Attester un fichier : 1 crédit. Envoyé en flux, lu à la volée, jamais conservé.
attestation = client.attestations.creer("facture-2026-118.pdf", email_visible=False)
print(attestation.id_attestation, attestation.url_recu)  # gardez url_recu : accès pérenne au reçu

# Vérifier un document reçu : ses empreintes sont calculées ici, le fichier ne part pas. Gratuit.
for candidate in client.verifier("document-recu.pdf"):
    print(candidate["id_attestation"], candidate["horodatage"])

Faire signer

circuit = client.circuits.creer(
    "contrat.pdf",
    signataires=[{"email": "lea@exemple.fr", "prenom": "Léa", "nom": "MARTIN"}],
    zones=[
        {
            "signataire": "lea@exemple.fr",
            "page": 1,
            "x": 0.6,
            "y": 0.8,
            "largeur": 0.3,
            "hauteur": 0.08,
            "type": "signature",
        }
    ],
    initiateur={"prenom": "Claire", "nom": "MOREAU"},  # si votre compte ne signe pas
)
envoyer_par_ma_messagerie(circuit.lien)  # https://opacte.eu/sign/…#k=… : Opacte ne l'envoie jamais
conserver(circuit.id_circuit, circuit.cle)  # sans la clé, personne ne relit le document signé

# plus tard : statut, puis le document signé, déchiffré ici
if client.circuits.lire(circuit.id_circuit).statut == "complet":
    pdf = client.circuits.document(circuit.id_circuit, circuit.cle)

1 crédit par circuit. Le SDK fait chez vous ce que fait le navigateur sur le site : contrôles, clé AES-256-GCM, chiffrement du PDF et des zones, empreintes ; les signataires signent sur la page /sign d'Opacte.

Webhooks

from opacte import webhooks

hook = client.webhooks.creer("https://crm.exemple.fr/opacte", ["circuit.signature", "circuit.complet"])
SECRET = hook.secret  # whsec_… : montré une seule fois

# à la réception, sur le corps brut :
evenement = webhooks.verifier(corps, entetes["Opacte-Signature"], SECRET)  # lève SignatureInvalide

Événements : attestation.definitive, attestation.ancree, circuit.signature, circuit.complet, circuit.expire, circuit.annule — identifiants, statuts et dates seulement.

Ce que fait le SDK

  • Fichiers en flux : un fichier à attester est envoyé par blocs, jamais chargé en entier en mémoire.
  • Chiffrement chez vous : même format que le navigateur (AES-256-GCM, données authentifiées par circuit et par version) ; la clé ne figure que dans le fragment du lien, qu'aucun navigateur n'envoie au serveur.
  • Nouvelles tentatives : sur coupure, 429 ou 5xx, l'appel est rejoué avec la même Idempotency-Key : jamais de second débit.
  • Erreurs typées : CleInvalide, CreditsInsuffisants (avec solde), TropDeDemandes, Introuvable…
  • Typé : annotations complètes, vérifiables par votre éditeur ou mypy.

Liens

Licence MIT.

Metadata

Release files for opacte 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for opacte 0.2.0
File Size Uploaded Provenance Actions
opacte-0.2.0.tar.gz 14.3 kB Without provenance Details for opacte-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for opacte 0.2.0
File Interpreter ABI Platform Actions
opacte-0.2.0-py3-none-any.whl Python 3 none any Details for opacte-0.2.0-py3-none-any.whl

Total release size: 30.3 kB

Release files / opacte-0.2.0.tar.gz

Download URL opacte-0.2.0.tar.gz
Size 14.3 kB
Tags Source
SHA-256 checksum
How to use checksums
20d7a5b2d26f540e59e7cb116781dd7af559a89cff33df21a8d1fd6274c588a1
BLAKE2b-256 checksum
How to use checksums
ae8ba2fa134091f5a670dd3d480d1ae3e4f62f668d0c69e0f809304d0aa16f5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / opacte-0.2.0-py3-none-any.whl

Download URL opacte-0.2.0-py3-none-any.whl
Size 16.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3f57be8ba31721623813ed896ebea56458c86f775a00ba6cf6febac878e46498
BLAKE2b-256 checksum
How to use checksums
c69a48adc133f7f59ba7198e6984154b6065625bed66528ee7b3b816d1deca7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Security for opacte 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page