Have I Been Pwned Domainverification API

The Domainverification API from Have I Been Pwned — 3 operation(s) for domainverification.

OpenAPI Specification

have-i-been-pwned-domainverification-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Have I Been Pwned API v3 Breach Domainverification API
  description: Version 3 of the Have I Been Pwned API. Authenticated APIs for breaches by account, pastes, domain search, domain verification, stealer logs, and subscription status require both the hibp-api-key and user-agent headers. Availability varies by subscription tier and is noted per operation. The Pwned Passwords range API is free and does not require authentication.
  version: 3.0.0
  license:
    name: Creative Commons Attribution 4.0 International
    url: https://creativecommons.org/licenses/by/4.0/
servers:
- url: https://haveibeenpwned.com/api/v3
  description: HIBP API v3 server
- url: https://api.pwnedpasswords.com
  description: Pwned Passwords k-Anonymity API (no authentication required)
tags:
- name: Domainverification
paths:
  /domainverification/generatednstoken:
    servers:
    - url: https://haveibeenpwned.com/api/v3
    post:
      summary: Generate a DNS verification token for a domain
      description: Available on Pro subscriptions. Generates the domain-specific TXT record value used to verify control of a domain via DNS before it can be searched through the domain search APIs.
      x-hibp-subscription-tiers:
      - Pro
      parameters:
      - $ref: '#/components/parameters/UserAgent'
      security:
      - HibpApiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainVerificationRequest'
            example:
              DomainName: example.com
      responses:
        '200':
          description: The TXT record value to publish on the domain.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainVerificationDnsTokenResponse'
              example:
                txtRecordValue: hibp-verify=dweb_abc123xyz
        '400':
          description: Bad request — the request body was invalid, the domain was invalid, or the domain cannot be verified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageOnlyError'
              examples:
                invalidDomain:
                  value:
                    message: An invalid domain was provided with the request
                alreadyVerified:
                  value:
                    message: Domain has already been verified.
                invalidJson:
                  value:
                    message: Invalid JSON
        '401':
          description: Unauthorized — the hibp-api-key header was missing, malformed, or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — no user agent has been specified in the request, or the current subscription does not include permission to add domains via the API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageOnlyError'
              examples:
                insufficientSubscription:
                  value:
                    message: Your subscription does not have permission to add domains. Please contact support if you believe this is an error.
      tags:
      - Domainverification
  /domainverification/verifydnstoken:
    servers:
    - url: https://haveibeenpwned.com/api/v3
    post:
      summary: Verify a DNS token for a domain
      description: Available on Pro subscriptions. Checks the hibp-verify TXT record on the requested domain and, if it matches the previously generated token, marks the domain as verified for domain search.
      x-hibp-subscription-tiers:
      - Pro
      parameters:
      - $ref: '#/components/parameters/UserAgent'
      security:
      - HibpApiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainVerificationRequest'
            example:
              DomainName: example.com
      responses:
        '200':
          description: The domain was successfully verified.
        '400':
          description: Bad request — the request body was invalid, the domain was invalid, or the domain cannot be verified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageOnlyError'
              examples:
                invalidDomain:
                  value:
                    message: An invalid domain was provided with the request
                invalidJson:
                  value:
                    message: Invalid JSON
        '401':
          description: Unauthorized — the hibp-api-key header was missing, malformed, or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — no user agent has been specified in the request, or the current subscription does not include permission to add domains via the API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageOnlyError'
              examples:
                insufficientSubscription:
                  value:
                    message: Your subscription does not have permission to add domains. Please contact support if you believe this is an error.
        '404':
          description: Not found — no matching hibp-verify TXT record was found on the domain.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageOnlyError'
              examples:
                noTxtRecords:
                  value:
                    message: No hibp-verify TXT records were found on the domain.
                wrongTxtRecord:
                  value:
                    message: Expected a TXT record of hibp-verify=dweb_abc123xyz but instead found hibp-verify=dweb_othercode
      tags:
      - Domainverification
  /domainverification/sendemail:
    servers:
    - url: https://haveibeenpwned.com/api/v3
    post:
      summary: Send a domain verification approval email
      description: Available on Pro subscriptions. Sends a verification email to one of the configured aliases on the target domain so that domain control can be approved via a link in the email.
      x-hibp-subscription-tiers:
      - Pro
      parameters:
      - $ref: '#/components/parameters/UserAgent'
      security:
      - HibpApiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainVerificationEmailRequest'
            example:
              DomainName: example.com
              EmailAlias: admin
      responses:
        '200':
          description: The verification email was sent successfully.
        '400':
          description: Bad request — the request body was invalid, the domain was invalid, the alias was invalid, or the verification email could not be sent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageOnlyError'
              examples:
                missingAlias:
                  value:
                    message: No emailAlias field was passed in the request body.
                invalidDomain:
                  value:
                    message: An invalid domain was provided with the request
                invalidJson:
                  value:
                    message: Invalid JSON
        '401':
          description: Unauthorized — the hibp-api-key header was missing, malformed, or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — no user agent has been specified in the request, or the current subscription does not include permission to add domains via the API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageOnlyError'
              examples:
                insufficientSubscription:
                  value:
                    message: Your subscription does not have permission to add domains. Please contact support if you believe this is an error.
      tags:
      - Domainverification
components:
  schemas:
    DomainVerificationRequest:
      type: object
      properties:
        DomainName:
          type: string
          description: Domain name to generate or verify a domain-verification token for.
      required:
      - DomainName
    DomainVerificationDnsTokenResponse:
      type: object
      properties:
        txtRecordValue:
          type: string
          description: TXT record value to publish on the domain before calling verifydnstoken.
      required:
      - txtRecordValue
    DomainVerificationEmailRequest:
      type: object
      properties:
        DomainName:
          type: string
          description: Domain name to send the verification email for.
        EmailAlias:
          type: string
          description: One of the configured domain-verification aliases (for example admin or postmaster).
      required:
      - DomainName
      - EmailAlias
    MessageOnlyError:
      type: object
      description: Simple error response used by the domain-verification APIs.
      properties:
        message:
          type: string
      required:
      - message
    Error:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
      required:
      - statusCode
      - message
      description: Standard error response returned by most authenticated HIBP APIs.
  parameters:
    UserAgent:
      name: user-agent
      in: header
      required: true
      description: User agent string identifying the consuming application. Required on all documented requests, including unauthenticated endpoints; missing user agents may receive HTTP 403 responses.
      schema:
        type: string
  securitySchemes:
    HibpApiKey:
      type: apiKey
      in: header
      name: hibp-api-key
      description: HIBP API key passed in the hibp-api-key header. Paid APIs require a 32-character hexadecimal value. On supported test-only endpoints, any 32-character hexadecimal value can be used as a test key for the hibp-integration-tests.com domain.
externalDocs:
  description: Full API documentation and acceptable use policy
  url: https://haveibeenpwned.com/API/v3