Skip to main content
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

  • Only PDF files are supported
  • Ensure PDFs are not password protected
  • Keep file size reasonable
  • Verify PDF is valid and not corrupted
  • Use direct signature request upload for simple, one-time signing flows
  • Pre-upload documents when you need to reuse them or manage them separately
  • Keep track of document IDs when pre-uploading
  • Clean up unused documents

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:
I