Citation Webhooks API

The Webhooks API from Citation — 3 operation(s) for webhooks.

Operations 4

GET /webhooks webhooks #
POST /webhooks create Webhook #
DELETE /webhooks/{webhook_id} delete Webhook #
GET /webhooks/{webhook_id}/deliveries webhook Deliveries #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/citation-co:citation-co-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

citation-co-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Citation Webhooks API
  version: 1.0.0
  description: Workspace scoped API keys, durable jobs and prepaid credits. AI and Check return proposals unless apply is true. Credit purchases are currently unavailable; operations that use credits require an existing balance.
servers:
- url: https://citation.co/api/v1
  description: Citation production
security:
- apiKey: []
tags:
- name: Webhooks
paths:
  /webhooks:
    get:
      operationId: webhooks
      summary: webhooks
      description: List webhook subscriptions belonging to this API connection using webhooks:write. The list contains destination, event and status metadata, without returning signing secrets.
      parameters: []
      security:
      - apiKey: []
      x-scopes:
      - webhooks:write
      x-credits: 0
      responses:
        '200':
          description: Successful operation.
          headers:
            X-Request-ID:
              schema:
                type: string
                format: uuid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhooks'
        '400':
          description: Invalid input
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Invalid key
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Insufficient credits
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource not found
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '408':
          description: Request timeout
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Version or idempotency conflict
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Size limit
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '415':
          description: Unsupported media
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Invalid content or credit ceiling
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate or queue limit
          headers:
            X-Request-ID:
              schema:
                type: string
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: Invalid provider result
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Temporarily unavailable
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Webhooks
    post:
      operationId: createWebhook
      summary: create Webhook
      description: Create a subscription for supported events at a public HTTPS URL using webhooks:write and an Idempotency-Key. Private destinations and redirects are blocked. Securely retain the returned secret to verify signed deliveries; event payloads contain identifiers rather than document text.
      parameters:
      - name: Idempotency-Key
        in: header
        required: true
        description: Reuse the same value and identical payload after a timeout. Different input returns 409. Retained across key rotation.
        schema:
          type: string
          minLength: 1
          maxLength: 128
      security:
      - apiKey: []
      x-scopes:
      - webhooks:write
      x-credits: 0
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/webhook'
      responses:
        '200':
          description: Successful operation.
          headers:
            X-Request-ID:
              schema:
                type: string
                format: uuid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookCreated'
        '400':
          description: Invalid input
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Invalid key
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Insufficient credits
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource not found
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '408':
          description: Request timeout
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Version or idempotency conflict
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Size limit
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '415':
          description: Unsupported media
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Invalid content or credit ceiling
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate or queue limit
          headers:
            X-Request-ID:
              schema:
                type: string
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: Invalid provider result
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Temporarily unavailable
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Webhooks
  /webhooks/{webhook_id}:
    delete:
      operationId: deleteWebhook
      summary: delete Webhook
      description: Delete a webhook subscription belonging to this API connection using webhooks:write and an Idempotency-Key. The subscription will no longer receive new event deliveries.
      parameters:
      - name: webhook_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: Idempotency-Key
        in: header
        required: true
        description: Reuse the same value and identical payload after a timeout. Different input returns 409. Retained across key rotation.
        schema:
          type: string
          minLength: 1
          maxLength: 128
      security:
      - apiKey: []
      x-scopes:
      - webhooks:write
      x-credits: 0
      responses:
        '200':
          description: Successful operation.
          headers:
            X-Request-ID:
              schema:
                type: string
                format: uuid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Deleted'
        '400':
          description: Invalid input
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Invalid key
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Insufficient credits
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource not found
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '408':
          description: Request timeout
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Version or idempotency conflict
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Size limit
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '415':
          description: Unsupported media
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Invalid content or credit ceiling
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate or queue limit
          headers:
            X-Request-ID:
              schema:
                type: string
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: Invalid provider result
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Temporarily unavailable
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Webhooks
  /webhooks/{webhook_id}/deliveries:
    get:
      operationId: webhookDeliveries
      summary: webhook Deliveries
      description: Read a cursor page of delivery status, attempts and response metadata for a webhook belonging to this API connection. Requires webhooks:write. Failed deliveries retry with increasing delay for at most six attempts; receivers must deduplicate event IDs.
      parameters:
      - name: webhook_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: uuid
          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
      - name: limit
        in: query
        required: false
        schema:
          default: 20
          type: integer
          minimum: 1
          maximum: 50
      security:
      - apiKey: []
      x-scopes:
      - webhooks:write
      x-credits: 0
      responses:
        '200':
          description: Successful operation.
          headers:
            X-Request-ID:
              schema:
                type: string
                format: uuid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveriesPage'
        '400':
          description: Invalid input
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Invalid key
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Insufficient credits
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource not found
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '408':
          description: Request timeout
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Version or idempotency conflict
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: Size limit
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '415':
          description: Unsupported media
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Invalid content or credit ceiling
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate or queue limit
          headers:
            X-Request-ID:
              schema:
                type: string
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: Invalid provider result
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Temporarily unavailable
          headers:
            X-Request-ID:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Webhooks
components:
  schemas:
    Deleted:
      type: object
      properties:
        deleted:
          type: boolean
          const: true
      required:
      - deleted
    Webhooks:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              url:
                type: string
              events:
                type: array
                items:
                  type: string
              enabled:
                type: boolean
              created_at:
                type: string
            required:
            - id
            - url
            - events
            - enabled
            - created_at
      required:
      - items
    DeliveriesPage:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              event_id:
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              status:
                type: string
                enum:
                - pending
                - delivered
                - failed
              attempts:
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              response_status:
                type:
                - number
                - 'null'
              available_at:
                type: string
            required:
            - id
            - event_id
            - status
            - attempts
            - response_status
            - available_at
        has_more:
          type: boolean
        next_cursor:
          type:
          - string
          - number
          - 'null'
      required:
      - items
      - has_more
      - next_cursor
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            retryable:
              type: boolean
            request_id:
              type: string
              format: uuid
              pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          required:
          - code
          - message
          - retryable
          - request_id
      required:
      - error
    webhook:
      type: object
      properties:
        url:
          type: string
          maxLength: 2000
          format: uri
        events:
          minItems: 1
          maxItems: 7
          type: array
          items:
            type: string
            enum:
            - document.created
            - document.updated
            - source.created
            - source.updated
            - job.succeeded
            - job.failed
            - job.cancelled
      required:
      - url
      - events
      additionalProperties: false
    WebhookCreated:
      type: object
      properties:
        id:
          type: string
          format: uuid
          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        url:
          type: string
        events:
          type: array
          items:
            type: string
        secret:
          type: string
      required:
      - id
      - url
      - events
      - secret
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: ca1_
externalDocs:
  description: API reference and authentication
  url: https://citation.co/docs/api
x-pricing:
  currency: USD
  package:
    amount: 1000
    credits: 100
  operations:
    write: 1
    resolve: 1
    import: 1
    export: 1
    check: 5
  expires: false
x-limits:
  key_per_minute: 120
  account_per_minute: 300
  running_jobs: 2
  queued_jobs: 20
  ai_words: 10000
  ai_sources: 12
  output_words: 2000
  check_words: 5000
  check_sources: 20
  file_bytes: 10000000