> For the complete documentation index, see [llms.txt](https://support.pipefile.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.pipefile.com/api-reference/webhooks-1.md).

# Webhooks

Register a URL and Pipefile POSTs JSON to it when an event happens. Every delivery has the shape `{"hook": {...}, "data": {...}}`: `hook` describes the webhook that fired and `data` is the request (see the `WebhookDelivery` schema). For `file_request.exported`, `data` also carries `export_destination`.

Your webhooks fire for requests you own. They also fire for a teammate's request when your team uses a shared inbox, when you are a team admin, or when the request is assigned to you.

Pipefile treats any response below 500 as delivered. On a network error, a timeout or a 5xx response it retries up to 5 times, waiting 1, 2, 4, 8 and 16 seconds.

The `team_member.joined` and `team_member.removed` events fire for team admins when someone joins or leaves the team; their `data` is the team member (`TeamMember` schema).

## List webhooks

> Returns the webhooks registered by your account, as a single unpaginated array.

```json
{"openapi":"3.0.3","info":{"title":"Pipefile API","version":"1.0"},"tags":[{"name":"Webhooks","description":"Register a URL and Pipefile POSTs JSON to it when an event happens. Every\ndelivery has the shape `{\"hook\": {...}, \"data\": {...}}`: `hook` describes\nthe webhook that fired and `data` is the request (see the\n`WebhookDelivery` schema). For `file_request.exported`, `data` also\ncarries `export_destination`.\n\nYour webhooks fire for requests you own. They also fire for a teammate's\nrequest when your team uses a shared inbox, when you are a team admin, or\nwhen the request is assigned to you.\n\nPipefile treats any response below 500 as delivered. On a network error,\na timeout or a 5xx response it retries up to 5 times, waiting 1, 2, 4, 8\nand 16 seconds.\n\nThe `team_member.joined` and `team_member.removed` events fire for team\nadmins when someone joins or leaves the team; their `data` is the team\nmember (`TeamMember` schema).\n"}],"servers":[{"url":"https://api.pipefile.com/v1","description":"Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"Your API key with the `Token` prefix: `Authorization: Token <your API key>`."}},"schemas":{"Webhook":{"type":"object","properties":{"id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"},"event":{"$ref":"#/components/schemas/WebhookEvent"},"target":{"type":"string","format":"uri"},"user":{"type":"integer","description":"Your user ID."}}},"WebhookEvent":{"type":"string","enum":["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","team_member.joined","team_member.removed"],"description":"`created` a request was sent (from the dashboard, the API, a template,\nbulk send, a lead form or your profile page). `opened` the request link\nwas opened. `reminder_sent` a reminder went out. `file_uploaded` a file\nfinished uploading. `item_reviewed` a checklist item was reviewed.\n`responded` every checklist item has a response. `completed` the request\nwas marked complete. `exported` files were exported to cloud storage.\n`expired` the request expired. `team_member.joined` /\n`team_member.removed` someone joined or left your team (team admins only).\n"},"Error":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]}},"responses":{"Forbidden":{"description":"The API key is missing, invalid or revoked, the account is not active, or you don't have access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Throttled":{"description":"Too many calls. Wait the number of seconds in the message, then retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/webhooks/":{"get":{"tags":["Webhooks"],"operationId":"listWebhooks","summary":"List webhooks","description":"Returns the webhooks registered by your account, as a single unpaginated array.","responses":{"200":{"description":"Your webhooks.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}}}},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/Throttled"}}}}}}
```

## Create a webhook

> Registers a URL to receive one event. Register one webhook per event you want.

```json
{"openapi":"3.0.3","info":{"title":"Pipefile API","version":"1.0"},"tags":[{"name":"Webhooks","description":"Register a URL and Pipefile POSTs JSON to it when an event happens. Every\ndelivery has the shape `{\"hook\": {...}, \"data\": {...}}`: `hook` describes\nthe webhook that fired and `data` is the request (see the\n`WebhookDelivery` schema). For `file_request.exported`, `data` also\ncarries `export_destination`.\n\nYour webhooks fire for requests you own. They also fire for a teammate's\nrequest when your team uses a shared inbox, when you are a team admin, or\nwhen the request is assigned to you.\n\nPipefile treats any response below 500 as delivered. On a network error,\na timeout or a 5xx response it retries up to 5 times, waiting 1, 2, 4, 8\nand 16 seconds.\n\nThe `team_member.joined` and `team_member.removed` events fire for team\nadmins when someone joins or leaves the team; their `data` is the team\nmember (`TeamMember` schema).\n"}],"servers":[{"url":"https://api.pipefile.com/v1","description":"Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"Your API key with the `Token` prefix: `Authorization: Token <your API key>`."}},"schemas":{"WebhookCreate":{"type":"object","properties":{"event":{"$ref":"#/components/schemas/WebhookEvent"},"target":{"type":"string","format":"uri","maxLength":255,"description":"The URL Pipefile POSTs to."}},"required":["event","target"]},"WebhookEvent":{"type":"string","enum":["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","team_member.joined","team_member.removed"],"description":"`created` a request was sent (from the dashboard, the API, a template,\nbulk send, a lead form or your profile page). `opened` the request link\nwas opened. `reminder_sent` a reminder went out. `file_uploaded` a file\nfinished uploading. `item_reviewed` a checklist item was reviewed.\n`responded` every checklist item has a response. `completed` the request\nwas marked complete. `exported` files were exported to cloud storage.\n`expired` the request expired. `team_member.joined` /\n`team_member.removed` someone joined or left your team (team admins only).\n"},"Webhook":{"type":"object","properties":{"id":{"type":"integer"},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"},"event":{"$ref":"#/components/schemas/WebhookEvent"},"target":{"type":"string","format":"uri"},"user":{"type":"integer","description":"Your user ID."}}},"ValidationErrors":{"type":"object","additionalProperties":true,"description":"Field name to a list of error messages. Nested fields (such as checklist items) return nested objects or lists in the same shape."},"Error":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]}},"responses":{"Forbidden":{"description":"The API key is missing, invalid or revoked, the account is not active, or you don't have access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Throttled":{"description":"Too many calls. Wait the number of seconds in the message, then retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/webhooks/":{"post":{"tags":["Webhooks"],"operationId":"createWebhook","summary":"Create a webhook","description":"Registers a URL to receive one event. Register one webhook per event you want.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"The webhook was created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"description":"The event name or target URL is not valid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrors"}}}},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/Throttled"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://support.pipefile.com/api-reference/webhooks-1.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
