---
title: "Handle Paperform form submissions"
method: POST
path: "/api/webhooks/paperform"
tags: ["Webhooks"]
---

# Handle Paperform form submissions

`POST /api/webhooks/paperform`

## Request

- Base URL: `https://api.production.yourmedley.com`
- URL: `https://api.production.yourmedley.com/api/webhooks/paperform`
- Auth: none declared

Receives webhook events from Paperform for form submissions.
Validates signature, stores payload, and queues for async processing.
Configure this URL in Paperform: https://paperform.co/help/articles/how-to-use-webhooks/

## Query parameters

- `secret` string

## Request body

- object
  - `event` string, required
  - `submission_id` string, required
  - `form_id` string, required
  - `created_at` string, date-time
  - `data` object[], required
    - `key` string
    - `title` string
    - `value` union
      - string
      - number
      - boolean
    - `type` string

## Response `200`

Webhook received and queued for processing

- object
  - `success` boolean
  - `data` object
    - `message` string
    - `event_id` string, uuid

## Other responses

- `400`: Invalid webhook payload
- `401`: Invalid webhook signature or secret
- `409`: Duplicate submission (already processed)

---

[API](https://skmtc.dev/withmedley/apis/medley-api.md) - [All operations](https://skmtc.dev/withmedley/apis/medley-api/llms.txt) - [OpenAPI document](https://skmtc.dev/withmedley/apis/medley-api/revisions/40aaac5ca6bd?raw)
