contractsign
Python SDK for the ContractSign API. Create contracts, send them for digital signing, manage templates, and track signing status — all from Python.
Install
pip install contractsign
Quick start
from contractsign import ContractSign, CreateContractInput, CreateSigningInput, SignerInput, SignerRole, SigningMethod
client = ContractSign(api_key="cs_...")
# Create a contract
contract = client.contracts.create(CreateContractInput(
title="Consulting Agreement",
content="<h1>Consulting Agreement</h1><p>...</p>",
))
contract_id = contract["data"]["id"]
# Send for signing
signing = client.signing.create(CreateSigningInput(
contract_id=contract_id,
signers=[
SignerInput(
name="Jane Doe",
email="jane@example.com",
role=SignerRole.SIGNER,
signing_method=SigningMethod.SMS_OTP,
order=1,
),
],
))
print(f"Signing request created: {signing['data']['id']}")
Context manager
The client can be used as a context manager to ensure the HTTP connection is closed:
with ContractSign(api_key="cs_...") as client:
contracts = client.contracts.list(limit=10)
for contract in contracts["data"]:
print(contract["title"])
Resources
| Resource | Methods |
|---|---|
client.contracts |
list(), get(), create(), update(), delete(), duplicate(), pdf(), list_parties(), add_party(), update_party(), delete_party() |
client.signing |
create(), get(), cancel(), remind() |
client.templates |
list(), get(), create(), update(), delete() |
client.folders |
list(), get(), create(), update(), delete() |
client.tags |
list(), create(), update(), delete() |
client.account |
me(), get_organization(), update_organization(), list_api_keys(), create_api_key(), delete_api_key() |
Error handling
from contractsign import ContractSign, NotFoundError, AuthenticationError, ValidationError
client = ContractSign(api_key="cs_...")
try:
contract = client.contracts.get("nonexistent-id")
except NotFoundError:
print("Contract not found")
except AuthenticationError:
print("Invalid API key")
except ValidationError as e:
print(f"Invalid input: {e.message}")
Configuration
client = ContractSign(
api_key="cs_...",
base_url="https://contractsign.net", # default
timeout=30.0, # seconds, default
)
Types
All input and output types are available as dataclasses with full type hints:
from contractsign import (
ContractStatus,
SigningOrder,
SignerRole,
SigningMethod,
CreateContractInput,
CreateSigningInput,
CreateTemplateInput,
CreateFolderInput,
CreateTagInput,
CreatePartyInput,
PartyType,
)
License
MIT
Metadata
Release files for contractsign 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| contractsign-0.1.0.tar.gz | 7.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| contractsign-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.9 kB
Release files / contractsign-0.1.0.tar.gz
| Download URL | contractsign-0.1.0.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
becf70b3d39ab5ba08dd1678869b2b0c30907beac8b5ed460452a91b409ebda1
|
|
BLAKE2b-256 checksum How to use checksums |
7eebca8718dbd864149c97a778db997afab00c42ed5cf21f030bb9c58846e5f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / contractsign-0.1.0-py3-none-any.whl
| Download URL | contractsign-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
51174698cb2face6721f2cc4e8f2061cd5059e4720ee25bf757b671bbbefb24a
|
|
BLAKE2b-256 checksum How to use checksums |
03936fa66b5c71a2c4f1a0464cb1a0b7dc314b88c81b7282c887916a225faca3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|