API Documentation

Integrate with Pipefile's file request and document collection platform.

Authentication

All API requests require authentication using a Bearer token. Include your API key in the Authorization header:
Authorization: Token your_api_key_here
Content-Type: application/json; charset=utf-8

File Requests

GET
https://api.pipefile.com/v1/file/requests/
Retrieve a list of file requests with optional filtering.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Query Parameters

idsA list of UUIDs to filter specific file requests
optional
searchA keyword to search through file requests
optional
statusFilters file requests by status: sent, responded, completed
optionaldefault:all
my_requestsIf true, returns only file requests created by the authenticated user
optionaldefault:false
unreadIf true, returns only unread file requests
optionaldefault:false
tagsA comma-separated string of tags to filter file requests
optional
trashIf true, returns trashed file requests
optionaldefault:false
start_dateFilters file requests created on or after this date
optional
end_dateFilters file requests created on or before this date
optional
pageThe page number for paginated results
optionaldefault:1

Sample Response

{ "count": 25, "num_pages": 3, "next": "https://api.pipefile.com/v1/file/requests/?page=2", "previous": null, "results": [ { "id": "b1f5e3f386f74da2b4493cf672cb58c0", "user": { "id": 1, "email": "user@example.com", "name": "John Doe" }, "assigned_to": [], "status": "responded", "unread": false, "recipients": [ { "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "", "email_bounced": false, "email_complained": false, "phone_unreachable": false } ], "subject": "Please upload your documents", "message": "We need the following documents for your application.", "checklist_metadata": { "responded": 2, "items": 3 }, "last_modified": "2024-01-17T10:30:00Z", "created_at": "2024-01-17T09:00:00Z" } ] }
POST
https://api.pipefile.com/v1/file/request/
Create a new file request directly with custom content.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Request Body

{ "recipients": [ { "name": "Jane Doe", "email": "jane@example.com", "phone": "" } ], "subject": "Please upload your documents", "message": "We need the following documents for your application.", "contents": [ { "type": "item", "name": "Identification", "instructions": "Please upload a valid government-issued ID", "file_types": ["documents"], "required": true }, { "type": "item", "name": "Proof of Address", "instructions": "Upload a utility bill or bank statement", "file_types": ["documents"], "required": true } ], "tags": ["urgent", "documents"], "reminder_frequency": 7, "expiration_date": "2024-02-17T00:00:00Z" }

Sample Response

{ "id": "b1f5e3f386f74da2b4493cf672cb58c0", "subject": "Please upload your documents", "message": "We need the following documents for your application.", "attachments": [], "contents": [ { "id": 1, "type": "item", "name": "Identification", "instructions": "Please upload a valid government-issued ID", "file_types": ["documents"], "required": true, "responded": false, "num_files": 0, "num_comments": 0, "num_unread_comments": 0, "reviews": [] }, { "id": 2, "type": "item", "name": "Proof of Address", "instructions": "Upload a utility bill or bank statement", "file_types": ["documents"], "required": true, "responded": false, "num_files": 0, "num_comments": 0, "num_unread_comments": 0, "reviews": [] } ], "tags": ["urgent", "documents"], "language": "en", "reminder_frequency": 7, "notification_sequence": null, "created_at": "2024-01-17T09:00:00Z", "file_pipe": { "id": 1, "key": "abc123", "enabled": true, "num_files": 0, "created_at": "2024-01-17T09:00:00Z" }, "user": { "id": 1, "email": "user@example.com", "name": "John Doe" }, "assigned_to": [], "recipients": [ { "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "", "email_bounced": false, "email_complained": false, "phone_unreachable": false } ], "unsubscribed_recipients": [], "unread": false, "num_comments": 0, "num_unread_comments": 0, "status": "sent", "is_active": true, "is_trash": false, "tracking_events": [], "reminder_last_sent": null, "expiration_date": "2024-02-17T00:00:00Z", "last_modified": "2024-01-17T09:00:00Z", "deleted_at": null, "storage_integration": null, "destination_path": null, "destination_folder_parents": null, "destination_folder_id": null, "destination_context": null, "destination_display_path": null, "destination_link": null }
POST
https://api.pipefile.com/v1/file/request/create_from_template/
Create a new file request from an existing template.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Request Body

{ "template": "b1f5e3f386f74da2b4493cf672cb58c0", "name": "Jane Doe", "email": "jane@example.com", "phone": "" }

Sample Response

{ "id": "c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7", "subject": "Please upload your documents", "message": "We need the following documents for your application.", "attachments": [], "contents": [ { "id": 1, "type": "item", "name": "Identification", "instructions": "Please upload a valid ID", "file_types": ["documents"], "required": true, "responded": false, "num_files": 0, "num_comments": 0, "num_unread_comments": 0, "reviews": [] } ], "tags": ["documents"], "language": "en", "reminder_frequency": null, "notification_sequence": null, "created_at": "2024-01-17T09:00:00Z", "file_pipe": { "id": 2, "key": "def456", "enabled": true, "num_files": 0, "created_at": "2024-01-17T09:00:00Z" }, "user": { "id": 1, "email": "user@example.com", "name": "John Doe" }, "assigned_to": [], "recipients": [ { "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "", "email_bounced": false, "email_complained": false, "phone_unreachable": false } ], "unsubscribed_recipients": [], "unread": false, "num_comments": 0, "num_unread_comments": 0, "status": "sent", "is_active": true, "is_trash": false, "tracking_events": [], "reminder_last_sent": null, "expiration_date": null, "last_modified": "2024-01-17T09:00:00Z", "deleted_at": null, "storage_integration": null, "destination_path": null, "destination_folder_parents": null, "destination_folder_id": null, "destination_context": null, "destination_display_path": null, "destination_link": null }
GET
https://api.pipefile.com/v1/file/request/<request_id>/detail/
Retrieve detailed information about a specific file request, including all contents, items, files, and tracking events.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Sample Response

{ "id": "b1f5e3f386f74da2b4493cf672cb58c0", "subject": "Please upload your documents", "message": "We need the following documents for your application.", "attachments": [], "contents": [ { "id": 1, "type": "item", "name": "Identification", "instructions": "Please upload a valid government-issued ID", "file_types": ["documents"], "required": true, "responded": true, "num_files": 2, "num_comments": 0, "num_unread_comments": 0, "reviews": [] } ], "tags": ["urgent", "documents"], "language": "en", "reminder_frequency": 7, "notification_sequence": null, "created_at": "2024-01-17T09:00:00Z", "file_pipe": { "id": 1, "key": "abc123", "enabled": true, "num_files": 2, "created_at": "2024-01-17T09:00:00Z" }, "user": { "id": 1, "email": "user@example.com", "name": "John Doe" }, "assigned_to": [], "recipients": [ { "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "", "email_bounced": false, "email_complained": false, "phone_unreachable": false, "client_link": "https://pipefile.com/request/abc123/jane@example.com" } ], "unsubscribed_recipients": [], "unread": false, "num_comments": 3, "num_unread_comments": 1, "status": "responded", "is_active": true, "is_trash": false, "tracking_events": [ { "id": 1, "contact": { "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "" }, "ip_address": "192.168.1.1", "viewed_ts": "2024-01-17T10:00:00Z" } ], "reminder_last_sent": null, "expiration_date": "2024-02-17T00:00:00Z", "last_modified": "2024-01-17T10:30:00Z", "deleted_at": null, "storage_integration": null, "destination_path": null, "destination_folder_parents": null, "destination_folder_id": null, "destination_context": null, "destination_display_path": null, "destination_link": null }
GET
https://api.pipefile.com/v1/file/request/templates/
Retrieve a list of file request templates that you can use to create file requests.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Query Parameters

searchSearch templates by name
optional

Sample Response

[ { "id": "b1f5e3f386f74da2b4493cf672cb58c0", "uuid": "b1f5e3f386f74da2b4493cf672cb58c0", "user": 1, "name": "Document Collection Template", "is_owner": true, "shared": false, "locked": false, "modifiable": true, "groups": [], "public": false, "template_data": { "subject": "Please upload your documents", "message": "We need the following documents for your application.", "reminder_frequency": 7, "expiration_days": 30, "contents": [ { "id": 1, "type": "item", "name": "Identification", "instructions": "Please upload a valid ID", "file_types": ["documents"], "required": true } ], "attachments": [], "tags": ["documents"], "language": "en", "notification_sequence": null, "storage_integration": null, "destination_path": null, "destination_folder_parents": null, "destination_folder_id": null, "destination_context": null } } ]

Webhooks

GET
https://api.pipefile.com/v1/webhooks/
Retrieve a list of configured webhooks.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Sample Response

[ { "id": 1, "event": "file_request.file_uploaded", "target": "https://hook.us1.make.com/abc123/", "created": "2024-01-15T10:30:00Z" }, { "id": 2, "event": "file_request.completed", "target": "https://example.com/webhook", "created": "2024-01-16T14:20:00Z" } ]
POST
https://api.pipefile.com/v1/webhooks/
Create a new webhook to receive notifications for specific events.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Request Body

{ "event": "file_request.file_uploaded", "target": "https://hook.us1.make.com/abc123/" }

Sample Response

{ "id": 3, "event": "file_request.file_uploaded", "target": "https://hook.us1.make.com/abc123/", "created": "2024-01-17T09:15:00Z" }

Available Event Types

file_request.created
file_request.opened
file_request.reminder_sent
file_request.file_uploaded
file_request.item_reviewed
file_request.responded
file_request.completed
file_request.exported
file_request.expired

Webhook Payload Example

When an event occurs, Pipefile will send a POST request to your webhook target URL with the following payload structure:
{ "hook": { "id": 3, "event": "file_request.file_uploaded", "target": "https://hook.us1.make.com/abc123/", "created": "2024-01-17T09:15:00Z" }, "data": { "id": "b1f5e3f386f74da2b4493cf672cb58c0", "user": { "id": 1, "email": "user@example.com", "name": "John Doe" }, "assigned_to": [], "status": "responded", "unread": false, "recipients": [ { "id": 1, "name": "Jane Doe", "email": "jane@example.com", "phone": "" } ], "tags": ["urgent", "documents"], "subject": "Please upload your documents", "message": "We need the following documents for your application.", "contents": [ { "id": 1, "type": "item", "name": "Identification", "instructions": "Please upload a valid ID", "file_types": ["documents"], "required": true, "responded": true, "num_files": 2, "num_comments": 0, "num_unread_comments": 0, "reviews": [] } ], "unreviewed_files": 0, "file_pipe": { "id": 1, "key": "abc123", "enabled": true, "num_files": 2, "created_at": "2024-01-17T09:00:00Z" }, "destination_link": null, "last_modified": "2024-01-17T10:30:00Z", "created_at": "2024-01-17T09:00:00Z" } }

Contacts

POST
https://api.pipefile.com/v1/contacts/
Create a new contact.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Request Body

{ "name": "Jane Doe", "email": "jane@example.com", "phone": "" }

Sample Response

{ "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "", "email_bounced": false, "email_complained": false, "phone_unreachable": false }
GET
https://api.pipefile.com/v1/contacts/
Retrieve a list of contacts with optional filtering.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Query Parameters

nameFilter contacts by name
partial matchoptional
emailFilter contacts by email
partial matchoptional
phoneFilter contacts by phone
partial matchoptional
pageThe page number for paginated results
optionaldefault:1
page_sizeNumber of results per page
optionaldefault:25max:100

Sample Response

{ "count": 50, "num_pages": 2, "next": "https://api.pipefile.com/v1/contacts/?page=2", "previous": null, "results": [ { "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "", "email_bounced": false, "email_complained": false, "phone_unreachable": false }, { "id": "b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8", "name": "John Smith", "email": "john@example.com", "phone": "+1234567890", "email_bounced": false, "email_complained": false, "phone_unreachable": false } ] }
GET
https://api.pipefile.com/v1/contacts/<contact_id>/
Retrieve a specific contact by ID.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Sample Response

{ "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "", "email_bounced": false, "email_complained": false, "phone_unreachable": false }
PUT
https://api.pipefile.com/v1/contacts/<contact_id>/
Update an existing contact.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Request Body

{ "name": "Jane Doe", "email": "jane@example.com", "phone": "" }

Sample Response

{ "id": "a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7", "name": "Jane Doe", "email": "jane@example.com", "phone": "", "email_bounced": false, "email_complained": false, "phone_unreachable": false }
DELETE
https://api.pipefile.com/v1/contacts/<contact_id>/
Delete a contact. Returns 204 No Content on success.

Headers

Authorization: Token {{ api_token }}
Content-Type: application/json; charset=utf-8

Need Help?

Our support team is here to help you integrate with our API.