openapi: 3.1.0 info: title: Kickbox Email Verification API description: | REST API for verifying the deliverability of email addresses with Kickbox. Endpoint paths and authentication are derived from the official Kickbox PHP SDK at https://github.com/kickboxio/kickbox-php (see HttpClient.php and Api/Kickbox.php), which is the canonical client for the production API. version: "2.0.0" contact: name: Kickbox url: https://kickbox.com/ email: help@kickbox.com servers: - url: https://api.kickbox.com description: Kickbox production API. - url: https://open.kickbox.io description: Kickbox Open (disposable lookup) API. security: - TokenAuth: [] tags: - name: Verification description: Real-time email verification. - name: Batch description: Bulk CSV email verification. - name: Account description: Account balance and metadata. - name: Open description: Free disposable-domain lookup (no auth). paths: /v2/verify: get: tags: [Verification] summary: Verify a single email address operationId: verifyEmail parameters: - name: email in: query required: true description: The email address to verify. schema: type: string format: email - name: timeout in: query required: false description: Verification timeout in milliseconds. schema: type: integer minimum: 1000 maximum: 30000 default: 6000 responses: '200': description: Verification result. headers: X-Kickbox-Balance: description: Remaining verification credits. schema: type: integer X-Kickbox-Response-Time: description: Backend processing time in milliseconds. schema: type: integer content: application/json: schema: $ref: '#/components/schemas/VerificationResult' '401': $ref: '#/components/responses/Unauthorized' /v2/verify-batch: put: tags: [Batch] summary: Start a batch verification job operationId: verifyBatch parameters: - name: X-Kickbox-Filename in: header required: false schema: type: string requestBody: required: true content: text/csv: schema: type: string description: Newline-delimited list of email addresses. responses: '200': description: Batch job created. content: application/json: schema: $ref: '#/components/schemas/BatchSubmitResponse' '401': $ref: '#/components/responses/Unauthorized' /v2/verify-batch/{id}: parameters: - name: id in: path required: true description: Batch job ID. schema: type: integer get: tags: [Batch] summary: Get the status or result of a batch verification job operationId: getBatchResults responses: '200': description: Batch status and (when ready) result download URL. content: application/json: schema: $ref: '#/components/schemas/BatchStatusResponse' '401': $ref: '#/components/responses/Unauthorized' /v2/balance: get: tags: [Account] summary: Get the account verification balance operationId: getBalance responses: '200': description: Remaining verification credits. content: application/json: schema: type: object properties: balance: type: integer '401': $ref: '#/components/responses/Unauthorized' /v1/disposable/{email}: servers: - url: https://open.kickbox.io description: Kickbox Open API (free, no auth). parameters: - name: email in: path required: true schema: type: string get: tags: [Open] summary: Check if a domain is a known disposable email provider operationId: isDisposable security: [] responses: '200': description: Disposable lookup result. content: application/json: schema: type: object properties: disposable: type: boolean components: securitySchemes: TokenAuth: type: http scheme: bearer bearerFormat: token description: | Kickbox API key sent in the Authorization header in the form `Authorization: token YOUR_API_KEY`. responses: Unauthorized: description: Missing or invalid API key. content: application/json: schema: type: object properties: success: type: boolean message: type: string schemas: VerificationResult: type: object properties: result: type: string enum: [deliverable, undeliverable, risky, unknown] reason: type: string description: Reason code such as accepted_email, rejected_email, invalid_smtp, etc. role: type: boolean free: type: boolean disposable: type: boolean accept_all: type: boolean did_you_mean: type: string sendex: type: number minimum: 0 maximum: 1 email: type: string user: type: string domain: type: string success: type: boolean message: type: string BatchSubmitResponse: type: object properties: id: type: integer success: type: boolean message: type: string BatchStatusResponse: type: object properties: id: type: integer status: type: string enum: [pending, processing, completed, error] stats: type: object properties: deliverable: type: integer undeliverable: type: integer risky: type: integer unknown: type: integer total: type: integer download_url: type: string format: uri success: type: boolean message: type: string