sochain-com Webhooks API

The Webhooks API from sochain-com — 6 operation(s) for webhooks.

Operations 10

GET /webhooks List your webhooks #
POST /webhooks Create a webhook #
GET /webhooks/{id} One webhook #
PATCH /webhooks/{id} Change a webhook #
DELETE /webhooks/{id} Remove a webhook #
POST /webhooks/{id}/addresses Watch more addresses (bulk) #
DELETE /webhooks/{id}/addresses Stop watching addresses #
POST /webhooks/{id}/transactions Register transactions to track #
GET /webhooks/{id}/deliveries Recent deliveries #
POST /webhooks/{id}/verify Check a webhook's endpoint again #

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/sochain-com:sochain-com-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

sochain-com-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Sochain Com Webhooks API
  version: '3'
  description: 'Operations tagged Webhooks across 3 of this provider''s published API definitions: sochain-com-openapi.json, dev-sochain-com-openapi.json, sochain-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://sochain.com/api/v3
- url: https://dev.sochain.com/api/v3
security:
- ApiKey: []
- ApiKeyQuery: []
tags:
- name: Webhooks
paths:
  /webhooks:
    get:
      operationId: list_webhooks
      tags:
      - Webhooks
      summary: List your webhooks
      description: 'Webhooks per plan: Free 5 (testnets only), Hobby 10, Starter 100, Professional 5,000, Behemoth 25,000.'
      parameters: []
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/WebhookList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '503':
          $ref: '#/components/responses/Unavailable'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    post:
      operationId: create_webhook
      tags:
      - Webhooks
      summary: Create a webhook
      description: Each notification counts as one request; retries don't. Addresses watched by address webhooks and streams together, each counted once, are capped per plan (Free 500, Hobby 1,000, Starter 10,000, Professional 25,000, Behemoth 100,000; Free's on testnets); past that, 403.
      parameters: []
      security:
      - ApiKey: []
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/Webhook'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '413':
          $ref: '#/components/responses/TooLarge'
        '415':
          $ref: '#/components/responses/NotJson'
        '503':
          $ref: '#/components/responses/Unavailable'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCreate'
            example:
              type: address.transaction
              network: BTC
              url: https://api.yourapp.com/hooks/deposits
              bucket: wallet1
              notify_at:
              - 0
              - 1
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    servers:
    - url: https://sochain.com/api/v3
  /webhooks/{id}:
    get:
      operationId: get_webhook
      tags:
      - Webhooks
      summary: One webhook
      description: ''
      parameters:
      - $ref: '#/components/parameters/webhook_id'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/Webhook'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '503':
          $ref: '#/components/responses/Unavailable'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    patch:
      operationId: update_webhook
      tags:
      - Webhooks
      summary: Change a webhook
      description: Its url, label, notify_at or threshold, or pause and resume it (status). A new url is checked at once. Any other field is refused with a 400 that says where that change is made.
      parameters:
      - $ref: '#/components/parameters/webhook_id'
      security:
      - ApiKey: []
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/Webhook'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '413':
          $ref: '#/components/responses/TooLarge'
        '415':
          $ref: '#/components/responses/NotJson'
        '429':
          description: 'A new url within 10 seconds of the endpoint''s last check: wait the Retry-After seconds.'
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Fail'
        '503':
          $ref: '#/components/responses/Unavailable'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookUpdate'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    delete:
      operationId: delete_webhook
      tags:
      - Webhooks
      summary: Remove a webhook
      description: ''
      parameters:
      - $ref: '#/components/parameters/webhook_id'
      security:
      - ApiKey: []
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    type: object
                    required:
                    - id
                    - deleted
                    properties:
                      id:
                        type: string
                      deleted:
                        const: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '503':
          $ref: '#/components/responses/Unavailable'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    servers:
    - url: https://sochain.com/api/v3
  /webhooks/{id}/addresses:
    post:
      operationId: add_webhook_addresses
      tags:
      - Webhooks
      summary: Watch more addresses (bulk)
      description: ''
      parameters:
      - $ref: '#/components/parameters/webhook_id'
      security:
      - ApiKey: []
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/WebhookAddressesAdded'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '413':
          $ref: '#/components/responses/TooLarge'
        '415':
          $ref: '#/components/responses/NotJson'
        '503':
          $ref: '#/components/responses/Unavailable'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddressList'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    delete:
      operationId: remove_webhook_addresses
      tags:
      - Webhooks
      summary: Stop watching addresses
      description: ''
      parameters:
      - $ref: '#/components/parameters/webhook_id'
      security:
      - ApiKey: []
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/WebhookAddressesRemoved'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '413':
          $ref: '#/components/responses/TooLarge'
        '415':
          $ref: '#/components/responses/NotJson'
        '503':
          $ref: '#/components/responses/Unavailable'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddressList'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    servers:
    - url: https://sochain.com/api/v3
  /webhooks/{id}/transactions:
    post:
      operationId: add_webhook_transactions
      tags:
      - Webhooks
      summary: Register transactions to track
      description: For transaction.confirmation webhooks, up to 1,000 per call. The transactions your webhooks track at once, across all of them, are capped per plan (Free 500, Hobby 1,000, Starter 10,000, Professional 25,000, Behemoth 100,000; Free's on testnets; each stops counting once its last notify_at level is sent); past that, 403.
      parameters:
      - $ref: '#/components/parameters/webhook_id'
      security:
      - ApiKey: []
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/WebhookTransactionsAdded'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '413':
          $ref: '#/components/responses/TooLarge'
        '415':
          $ref: '#/components/responses/NotJson'
        '503':
          $ref: '#/components/responses/Unavailable'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionList'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    servers:
    - url: https://sochain.com/api/v3
  /webhooks/{id}/deliveries:
    get:
      operationId: list_webhook_deliveries
      tags:
      - Webhooks
      summary: Recent deliveries
      description: ''
      parameters:
      - $ref: '#/components/parameters/webhook_id'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/Deliveries'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '503':
          $ref: '#/components/responses/Unavailable'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    servers:
    - url: https://sochain.com/api/v3
  /webhooks/{id}/verify:
    post:
      operationId: verify_webhook
      tags:
      - Webhooks
      summary: Check a webhook's endpoint again
      description: Sends the webhook.verify challenge again; the answer's status and verify_error say how it went. Counts as one request; at most once every 10 seconds per webhook.
      parameters:
      - $ref: '#/components/parameters/webhook_id'
      security:
      - ApiKey: []
      responses:
        '200':
          description: Checked.
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - data
                properties:
                  status:
                    const: success
                  data:
                    $ref: '#/components/schemas/Webhook'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          description: 'The endpoint was checked under 10 seconds ago: wait the Retry-After seconds.'
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Fail'
        '503':
          $ref: '#/components/responses/Unavailable'
      externalDocs:
        url: https://sochain.com/docs/webhooks/api
    servers:
    - url: https://sochain.com/api/v3
components:
  schemas:
    WebhookAddressesAdded:
      type: object
      required:
      - id
      - added
      - num_addresses
      properties:
        id:
          type: string
        added:
          type: integer
          description: Addresses it didn't watch yet.
        num_addresses:
          type: integer
          description: Addresses it watches now.
    TransactionList:
      type: object
      required:
      - transactions
      properties:
        transactions:
          type: array
          minItems: 1
          items:
            type: string
            pattern: ^[0-9a-f]{64}$
          description: Transaction IDs to track.
    Deliveries:
      type: object
      description: 'Recent deliveries of this webhook: the event, the attempt count, and how your server answered.'
      required:
      - id
      - deliveries
      properties:
        id:
          type: string
          description: The webhook.
        deliveries:
          type: array
          items:
            type: object
    WebhookList:
      type: object
      required:
      - webhooks
      properties:
        webhooks:
          type: array
          items:
            $ref: '#/components/schemas/Webhook'
    WebhookType:
      enum:
      - address.transaction
      - transaction.confirmation
      - block.new
      - fees.below
      - fees.above
      description: block.reorged, transaction.replaced and transaction.dropped are delivered alongside these; they aren't created on their own.
    Fail:
      type: object
      required:
      - status
      - data
      properties:
        status:
          const: fail
        data:
          type: object
          required:
          - error_message
          properties:
            error_message:
              type: string
    BucketName:
      type: string
      pattern: ^[A-Za-z0-9_-]+$
      description: Letters, numbers, - and _, up to 64 characters. Unique within your account.
      maxLength: 64
    AddressList:
      type: object
      required:
      - addresses
      properties:
        addresses:
          type: array
          minItems: 1
          maxItems: 1000
          items:
            type: string
    WebhookUpdate:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: 'A new endpoint: it''s checked at once, and the webhook is unverified until it echoes the challenge.'
        status:
          enum:
          - active
          - paused
          description: Pause it, or resume it (a webhook resumes once verified).
        label:
          type: string
          description: Yours, as the dashboard shows it.
        notify_at:
          type: array
          items:
            type: integer
            minimum: 0
            maximum: 100
          description: 'address.transaction and transaction.confirmation: as on create.'
        threshold:
          type: number
          exclusiveMinimum: 0
          description: 'fees.below and fees.above: the fee rate to cross; the alert starts over.'
      description: Any of these; what isn't sent stays as it is. Any other field is refused with a 400.
    WebhookAddressesRemoved:
      type: object
      required:
      - id
      - removed
      properties:
        id:
          type: string
        removed:
          type: integer
          description: Addresses it stopped watching.
    Webhook:
      type: object
      required:
      - id
      - type
      - network
      - url
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/WebhookType'
        network:
          enum:
          - BTC
          - LTC
          - DOGE
          - ZEC
          - BTCTEST
          - LTCTEST
          - DOGETEST
          - ZECTEST
        url:
          type: string
          format: uri
        bucket:
          type:
          - string
          - 'null'
        notify_at:
          type: array
          items:
            type: integer
        threshold:
          type:
          - number
          - 'null'
        label:
          type:
          - string
          - 'null'
          description: Yours, as the dashboard shows it.
        status:
          enum:
          - unverified
          - active
          - paused
        num_addresses:
          type: integer
          description: Addresses it watches itself (address.transaction without a bucket).
        num_transactions:
          type: integer
          description: Transactions it tracks (transaction.confirmation).
        created:
          type: integer
          description: When it was made (Unix time).
        last_event_at:
          type:
          - integer
          - 'null'
          description: When it last sent an event (Unix time); null before its first.
        failing_since:
          type:
          - integer
          - 'null'
          description: When its deliveries started failing (Unix time); null while they succeed.
        verified:
          type: boolean
        verify_error:
          type:
          - string
          - 'null'
          description: Why the last endpoint check failed, if it did.
        secret:
          type: string
          description: 'Only in the answer to POST /webhooks: the signing secret, shown once.'
    WebhookTransactionsAdded:
      type: object
      required:
      - id
      - added
      properties:
        id:
          type: string
        added:
          type: integer
          description: Transactions it didn't track yet.
    WebhookCreate:
      type: object
      required:
      - type
      - url
      properties:
        type:
          $ref: '#/components/schemas/WebhookType'
        network:
          enum:
          - BTC
          - LTC
          - DOGE
          - ZEC
          - BTCTEST
          - LTCTEST
          - DOGETEST
          - ZECTEST
          description: 'Required unless bucket is given. Free plans: BTCTEST, LTCTEST, DOGETEST or ZECTEST.'
        url:
          type: string
          format: uri
          description: Your HTTPS endpoint, on a public host (not sochain.com).
        bucket:
          $ref: '#/components/schemas/BucketName'
          description: 'address.transaction only: watch every address in this bucket.'
        addresses:
          type: array
          maxItems: 1000
          items:
            type: string
          description: 'address.transaction without a bucket: the addresses to watch, up to 1,000 in this call (add more with POST /webhooks/{id}/addresses).'
        transactions:
          type: array
          maxItems: 1000
          items:
            type: string
          description: 'transaction.confirmation: the transaction IDs to track, up to 1,000 in this call (add more with POST /webhooks/{id}/transactions).'
        notify_at:
          type: array
          items:
            type: integer
            minimum: 0
            maximum: 100
          description: 'Confirmation counts to notify at, from 0 (first seen) to 100; transaction.confirmation from 1. Defaults: [0, 1] for address.transaction, [1, 2, 3, 6] for transaction.confirmation.'
        label:
          type: string
          description: 'Optional, for you: shown on the dashboard.'
        threshold:
          type: number
          description: 'fees.below / fees.above: the fee rate (sat/vB, lit/vB or koinu/vB) to cross.'
  parameters:
    webhook_id:
      name: id
      in: path
      required: true
      description: The webhook's ID.
      schema:
        type: string
  responses:
    NotJson:
      description: 'A body that isn''t JSON: send it with Content-Type: application/json.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Fail'
    TooLarge:
      description: 'A body over the limit: 256 KB where a call carries addresses or transaction IDs, 64 KB otherwise.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Fail'
    BadRequest:
      description: A bad parameter or body; the message says which.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Fail'
    Unauthorized:
      description: An invalid key, no key where one is needed (buckets, webhooks, /account_info), a locked account or expired plan, or both the month's requests and the keyless rate used up. Kept as 401, with this message, for v3 compatibility.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Fail'
          example:
            status: fail
            data:
              error_message: API Key invalid, account access expired, or this account's daily request limit has been exhausted.
    Forbidden:
      description: 'A read-only key, or a change past your plan''s limits: data.error_message says which.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Fail'
    Unavailable:
      description: Briefly unavailable; retry with backoff. May carry Retry-After.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Fail'
          example:
            status: fail
            data:
              error_message: Temporarily unavailable. Try again in a few minutes.
    NotFound:
      description: Not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Fail'
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: API-KEY
      description: Your key, from the dashboard.
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: Your key as a URL parameter, for lookups (GET) from tools that can't send a header, such as spreadsheets. Best a read-only key.
x-refined-from:
- sochain-com-openapi.json
- dev-sochain-com-openapi.json
- sochain-com-openapi.json