Folk Webhooks API

Real-time change-event subscriptions.

OpenAPI Specification

folk-app-webhooks-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Folk External Companies Webhooks API
  description: Folk's public REST API lets you manage the relationship data in a Folk workspace - people, companies, groups, deals and other custom objects, notes, reminders, and interactions - and subscribe to real-time changes via webhooks. The API is versioned by date (send an `Folk-Version` date such as 2025-06-09); the production base URL is https://api.folk.app and all documented resources live under the `/v1` path. Every request is authenticated with a Bearer API key created in workspace settings under "API". API access is a paid-plan (Premium / Enterprise) feature. This document is modeled by API Evangelist from Folk's published OpenAPI schema (https://developer.folk.app/schemas/2025-06-09.json) and reference docs.
  version: '2025-06-09'
  contact:
    name: Folk
    url: https://www.folk.app
  termsOfService: https://www.folk.app/legal/terms-and-conditions
servers:
- url: https://api.folk.app
  description: Folk's public API production base URL.
security:
- bearerApiKeyAuth: []
tags:
- name: Webhooks
  description: Real-time change-event subscriptions.
paths:
  /v1/webhooks:
    get:
      operationId: listWebhooks
      tags:
      - Webhooks
      summary: List webhooks
      responses:
        '200':
          description: A list of webhooks.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Webhook'
    post:
      operationId: createWebhook
      tags:
      - Webhooks
      summary: Create a webhook
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookInput'
      responses:
        '201':
          description: The webhook was created, including its signing secret.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/WebhookWithSigningSecret'
  /v1/webhooks/{webhookId}:
    parameters:
    - name: webhookId
      in: path
      required: true
      description: The unique identifier of the webhook.
      schema:
        type: string
    get:
      operationId: getWebhook
      tags:
      - Webhooks
      summary: Get a webhook
      responses:
        '200':
          description: The requested webhook.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Webhook'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateWebhook
      tags:
      - Webhooks
      summary: Update a webhook
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookInput'
      responses:
        '200':
          description: The updated webhook.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Webhook'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteWebhook
      tags:
      - Webhooks
      summary: Delete a webhook
      responses:
        '204':
          description: The webhook was deleted.
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    WebhookInput:
      type: object
      required:
      - targetUrl
      - subscribedEvents
      properties:
        name:
          type: string
          maxLength: 255
          example: My app integration
        targetUrl:
          type: string
          format: uri
          maxLength: 2048
          description: A publicly accessible HTTP or HTTPS URL to receive events.
          example: https://my-app.com/webhook
        subscribedEvents:
          type: array
          items:
            $ref: '#/components/schemas/WebhookSubscribedEvent'
    WebhookWithSigningSecret:
      allOf:
      - $ref: '#/components/schemas/Webhook'
      - type: object
        properties:
          signingSecret:
            type: string
            description: Secret used to verify the authenticity of webhook payloads.
    Webhook:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          maxLength: 255
        targetUrl:
          type: string
          format: uri
          maxLength: 2048
        subscribedEvents:
          type: array
          items:
            $ref: '#/components/schemas/WebhookSubscribedEvent'
        createdAt:
          type: string
          format: date-time
    WebhookSubscribedEvent:
      type: object
      properties:
        eventType:
          type: string
          enum:
          - person.created
          - person.updated
          - person.deleted
          - person.groups_updated
          - person.workspace_interaction_metadata_updated
          - company.created
          - company.updated
          - company.deleted
          - company.groups_updated
          - object.created
          - object.updated
          - object.deleted
          - note.created
          - note.updated
          - note.deleted
          - reminder.created
          - reminder.updated
          - reminder.deleted
          - reminder.triggered
        filter:
          type: object
          properties:
            groupId:
              type: string
              maxLength: 255
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: NOT_FOUND
            message:
              type: string
            documentationUrl:
              type: string
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerApiKeyAuth:
      type: http
      scheme: bearer
      description: 'API key for authentication, sent as `Authorization: Bearer <api_key>`. Keys are created in workspace settings under "API". API access requires a paid Folk plan.'
Where this information came from

This is an independent, third-party profile of Folk Webhooks API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.