Documents are the files that get signed in Skribble. There are two ways to handle documents in the signing process:

  1. Direct in Signature Request: Provide the document directly when creating a signature request
  2. Pre-upload: Upload the document first and use its ID in the signature request

Document Handling Methods

1. Direct in Signature Request

When creating a signature request, you can provide the document directly using either:

  • A publicly accessible URL to your PDF:
signature_request = {
    "title": "Test Signature Request",
    "file_url": "https://example.com/document.pdf",
    "signatures": [...]
}
response = skribble.signature_request.create(signature_request)
  • Base64 encoded PDF content:
with open("document.pdf", "rb") as f:
    content = base64.b64encode(f.read()).decode('utf-8')
    
signature_request = {
    "title": "Test Signature Request",
    "content": content,
    "signatures": [...]
}
response = skribble.signature_request.create(signature_request)

In both cases, Skribble will automatically create and manage the document as part of the signature request.

2. Pre-upload Document

Alternatively, you can upload a document first and then use its ID in signature requests:

  1. Upload the document:
# Read and encode PDF content
with open("document.pdf", "rb") as f:
    content = base64.b64encode(f.read()).decode('utf-8')
    
document = skribble.document.add({
    "content": content
})
document_id = document.id
  1. Use the document ID in signature requests:
signature_request = {
    "title": "Test Signature Request",
    "document_id": document_id,
    "signatures": [...]
}
response = skribble.signature_request.create(signature_request)

This approach is useful when you need to:

  • Reuse the same document in multiple signature requests
  • Verify the document is properly processed before creating signature requests
  • Manage documents separately from signature requests

Document Management

Get Document Metadata

Retrieve document information:

document = skribble.document.get(document_id)
print(f"Document ID: {document.id}")

Download Document

Download document content in either blob or base64 format:

# Download as blob (bytes)
content = skribble.document.download(document_id, content_type="blob")
with open("document.pdf", "wb") as f:
    f.write(content)

# Download as base64
base64_content = skribble.document.download(document_id, content_type="base64")
print(f"Base64 encoded content: {base64_content[:50]}...")

List Documents

List all documents with optional limit:

# List documents with limit
documents = skribble.document.list(limit=5)
for doc in documents:
    print(f"Document ID: {doc.id}")

Delete Document

Remove a document:

skribble.document.delete(document_id)

Best Practices

Error Handling

For detailed error handling guidance, please refer to our Error Handling Guide. Here’s a basic example:

try:
    document = skribble.document.add({"content": pdf_content})
except SkribbleValidationError as e:
    print(f"Invalid document data: {e.message}")
except SkribbleAPIError as e:
    print(f"API error ({e.status_code}): {e.message}")

API Reference

For detailed API documentation, see: