OpenAPI Specification
openapi: 3.0.3
info:
title: Snov.io Authentication Webhooks API
description: Snov.io is a sales automation and lead generation platform. The REST API enables programmatic access to email finding, domain search, email verification, drip campaign management, email warm-up, prospect management, CRM pipeline, and webhook subscriptions. Authentication uses OAuth 2.0 client credentials to obtain short-lived Bearer tokens. All API operations consume credits from the account balance.
version: '2.0'
contact:
name: Snov.io Support
url: https://snov.io/knowledgebase/
termsOfService: https://snov.io/terms-of-service/
license:
name: Proprietary
url: https://snov.io/terms-of-service/
servers:
- url: https://api.snov.io
description: Snov.io API server
tags:
- name: Webhooks
description: Real-time event webhook subscriptions
paths:
/v1/webhooks:
get:
tags:
- Webhooks
summary: List webhooks
description: Returns all webhook subscriptions for the account.
operationId: listWebhooks
security:
- bearerAuth: []
responses:
'200':
description: List of webhooks
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Webhook'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- Webhooks
summary: Add webhook
description: Create a new webhook subscription for real-time event notifications.
operationId: addWebhook
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookCreate'
responses:
'201':
description: Webhook created
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/v1/webhooks/{id}:
put:
tags:
- Webhooks
summary: Update webhook
description: Update an existing webhook subscription (e.g. change status or URL).
operationId: updateWebhook
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookCreate'
responses:
'200':
description: Webhook updated
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- Webhooks
summary: Delete webhook
description: Remove a webhook subscription.
operationId: deleteWebhook
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'204':
description: Webhook deleted
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
responses:
Unauthorized:
description: Unauthorized — missing or invalid Bearer token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad request — missing or invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Webhook:
type: object
properties:
id:
type: integer
url:
type: string
format: uri
event:
type: string
status:
type: string
enum:
- active
- inactive
created_at:
type: string
format: date-time
WebhookCreate:
type: object
required:
- url
- event
properties:
url:
type: string
format: uri
description: URL to receive webhook POST requests
event:
type: string
description: Event type to subscribe to
status:
type: string
enum:
- active
- inactive
default: active
Error:
type: object
properties:
error:
type: string
description: Error code
message:
type: string
description: Human-readable error message
parameters:
ResourceId:
name: id
in: path
required: true
schema:
type: integer
description: Resource ID
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Obtain a Bearer token via POST /v1/oauth/access_token using client credentials. Tokens expire after 3600 seconds.