_done Dmarc API

The dmarc API from _done — 1 operation(s) for dmarc.

Operations 1

POST /dmarc-lookup Look up DMARC email security records for one or many domains at once. #

Documentation

📖
Documentation
https://underscoredone.com/asn_lookup/
📖
APIReference
https://underscoredone.com/asn_lookup/
📖
Documentation
https://underscoredone.com/bimi_checker/
📖
APIReference
https://underscoredone.com/bimi_checker/
📖
Documentation
https://underscoredone.com/cors_header_checker/
📖
APIReference
https://underscoredone.com/cors_header_checker/
📖
Documentation
https://underscoredone.com/cpi_report_us/
📖
APIReference
https://underscoredone.com/cpi_report_us/
📖
Documentation
https://underscoredone.com/curl_http_request/
📖
APIReference
https://underscoredone.com/curl_http_request/
📖
Documentation
https://underscoredone.com/directory_submission_lite/
📖
APIReference
https://underscoredone.com/directory_submission_lite/
📖
Documentation
https://underscoredone.com/dmarc_lookup/
📖
APIReference
https://underscoredone.com/dmarc_lookup/
📖
Documentation
https://underscoredone.com/dns_whois_lookup/
📖
APIReference
https://underscoredone.com/dns_whois_lookup/
📖
Documentation
https://underscoredone.com/domain_age_checker/
📖
APIReference
https://underscoredone.com/domain_age_checker/
📖
Documentation
https://underscoredone.com/domain_availability_checker/
📖
APIReference
https://underscoredone.com/domain_availability_checker/
📖
Documentation
https://underscoredone.com/ens_resolver/
📖
APIReference
https://underscoredone.com/ens_resolver/
📖
Documentation
https://underscoredone.com/hackernews_data/
📖
APIReference
https://underscoredone.com/hackernews_data/
📖
Documentation
https://underscoredone.com/hash_hmac/
📖
APIReference
https://underscoredone.com/hash_hmac/
📖
Documentation
https://underscoredone.com/http_header_checker/
📖
APIReference
https://underscoredone.com/http_header_checker/
📖
Documentation
https://underscoredone.com/http_status_checker/
📖
APIReference
https://underscoredone.com/http_status_checker/
📖
Documentation
https://underscoredone.com/json_suite/
📖
APIReference
https://underscoredone.com/json_suite/
📖
Documentation
https://underscoredone.com/leetspeak_translator/
📖
APIReference
https://underscoredone.com/leetspeak_translator/
📖
Documentation
https://underscoredone.com/mortgage_amortization/
📖
APIReference
https://underscoredone.com/mortgage_amortization/
📖
Documentation
https://underscoredone.com/ocr/
📖
APIReference
https://underscoredone.com/ocr/
📖
Documentation
https://underscoredone.com/port_scanner/
📖
APIReference
https://underscoredone.com/port_scanner/
📖
Documentation
https://underscoredone.com/qr_code_generator/
📖
APIReference
https://underscoredone.com/qr_code_generator/
📖
Documentation
https://underscoredone.com/screenshots/
📖
APIReference
https://underscoredone.com/screenshots/
📖
Documentation
https://underscoredone.com/seo_data_extractor/
📖
APIReference
https://underscoredone.com/seo_data_extractor/
📖
Documentation
https://underscoredone.com/shopify_ai_rank_checker/
📖
APIReference
https://underscoredone.com/shopify_ai_rank_checker/
📖
Documentation
https://underscoredone.com/sitemap_url_extractor/
📖
APIReference
https://underscoredone.com/sitemap_url_extractor/
📖
Documentation
https://underscoredone.com/url_uptime_checker/
📖
APIReference
https://underscoredone.com/url_uptime_checker/

Specifications

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/done-dmarc-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

done-dmarc-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bulk Record Lookup Dmarc API
  description: Give this tool a list of domain names and it will instantly check each one's DMARC email security record. DMARC is a standard that tells email providers how to handle fake or spoofed emails pretending to come from your domain. For each domain you submit, you get back whether a valid record exists, what the policy is (none, quarantine, or reject), whether reporting addresses are set up, and the full raw record text. Perfect for auditing many domains at once without any setup.
  version: 1.0.0
  contact:
    name: _done
    url: https://forms.gle/5KzuSFH7p8hHtDmz7
    email: info@underscoredone.com
  x-openapi-url: https://dmarc-lookup.underscoredone.com/openapi.json
  x-logo:
    url: https://underscoredone.com/logo.png
    altText: _done
  x-guidance: 'Call this endpoint with POST and a JSON body containing a ''domains'' array of bare domain names (no http:// or www), e.g. {"domains": ["example.com", "mycompany.org"]}. Comma-separated strings inside an array entry are also tolerated and will be split. Each domain in the response will have: ''domain'' (the input domain), ''recordStatus'' (''Valid'', ''Invalid'', or ''Not Found''), ''domainPolicy'' (the p= tag value such as ''none'', ''quarantine'', ''reject'', or empty string if not found), ''reportingEnabled'' (true if rua or ruf tags are present), and ''rawRecord'' (the full TXT record string, or empty string if none). A ''Valid'' record has both v=DMARC1 and a p= tag. ''Invalid'' means a record was found but is missing one of those required tags. ''Not Found'' means no TXT record exists at _dmarc.{domain}. DNS failures for a specific domain are returned as ''Not Found'' rather than errors. A 400 is only returned if the domains array is empty or every entry is blank. A 422 is returned if the ''domains'' field is missing from the body or is not an array.'
  x-ai-instructions: 'Call this endpoint with POST and a JSON body containing a ''domains'' array of bare domain names (no http:// or www), e.g. {"domains": ["example.com", "mycompany.org"]}. Comma-separated strings inside an array entry are also tolerated and will be split. Each domain in the response will have: ''domain'' (the input domain), ''recordStatus'' (''Valid'', ''Invalid'', or ''Not Found''), ''domainPolicy'' (the p= tag value such as ''none'', ''quarantine'', ''reject'', or empty string if not found), ''reportingEnabled'' (true if rua or ruf tags are present), and ''rawRecord'' (the full TXT record string, or empty string if none). A ''Valid'' record has both v=DMARC1 and a p= tag. ''Invalid'' means a record was found but is missing one of those required tags. ''Not Found'' means no TXT record exists at _dmarc.{domain}. DNS failures for a specific domain are returned as ''Not Found'' rather than errors. A 400 is only returned if the domains array is empty or every entry is blank. A 422 is returned if the ''domains'' field is missing from the body or is not an array.'
  x-provider: _done — single-purpose utility APIs for developers and AI agents. Pay per call with USDC on Base Mainnet or Solana Mainnet.
  x-pricing:
    model: pay-per-call
    currency: USDC
    network: Base Mainnet or Solana Mainnet
    price: $0.01
  x-keywords: []
  x-category: dmarc
  x-provider-url: https://underscoredone.com
  x-agentcash-auth:
    mode: paid
  x-402:
    price: $0.01
    network: eip155:8453
    asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
    pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
    facilitator: https://api.cdp.coinbase.com/platform/v2/x402
    scheme: exact
    description: Give this tool a list of domain names and it will instantly check each one's DMARC email security record. DMARC is a standard that tells email providers how to handle fake or spoofed emails pretending to come from your domain. For each domain you submit, you get back whether a valid record exists, what the policy is (none, quarantine, or reject), whether reporting addresses are set up, and the full raw record text. Perfect for auditing many domains at once without any setup.
    mime_type: application/json
    networks:
    - network: eip155:8453
      asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
      pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
    - network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
      asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
      pay_to: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b
servers:
- url: https://dmarc-lookup.underscoredone.com
  description: Production
tags:
- name: dmarc
paths:
  /dmarc-lookup:
    post:
      tags:
      - dmarc
      summary: Look up DMARC email security records for one or many domains at once.
      description: Check the DMARC email security record for one or many domain names at once. Send a JSON body with a 'domains' array of bare domain names and get back the record status, policy, and full record text for each one.
      operationId: handler_dmarc_lookup_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Request'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
              examples:
                success:
                  summary: Successful response
                  value:
                    api_version: 1.0.0
                    results:
                    - domain: onescales.com
                      recordStatus: Valid
                      domainPolicy: reject
                      reportingEnabled: true
                      rawRecord: v=DMARC1;p=reject;rua=mailto:3e873edd60aa449aa519421775786d39@dmarc-reports.cloudflare.net,mailto:dmarc@onescales.com,mailto:27da9b4b47@rua.easydmarc.us;ruf=mailto:27da9b4b47@ruf.easydmarc.us;fo=1;
                    - domain: hillms.com
                      recordStatus: Valid
                      domainPolicy: reject
                      reportingEnabled: true
                      rawRecord: v=DMARC1;p=reject;rua=mailto:info@hillms.com;
                    - domain: nodmarc-example.com
                      recordStatus: Not Found
                      domainPolicy: ''
                      reportingEnabled: false
                      rawRecord: ''
                    total: 3
                    valid_count: 2
                    invalid_count: 0
                    not_found_count: 1
        '422':
          description: Unprocessable — a required field is missing or the wrong type. Check the detail field for specifics.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: array
        '402':
          description: Payment required. Send a signed USDC payment on Base Mainnet or Solana Mainnet using the x402 protocol.
          headers:
            X-Payment-Response:
              description: x402 payment challenge — base64-encoded JSON with payment details.
              schema:
                type: string
        '400':
          description: Bad request — your input failed validation or could not be processed. Check the detail field for specifics.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
      x-ai-instructions: 'Call this endpoint with POST and a JSON body containing a ''domains'' array of bare domain names (no http:// or www), e.g. {"domains": ["example.com", "mycompany.org"]}. Comma-separated strings inside an array entry are also tolerated and will be split. Each domain in the response will have: ''domain'' (the input domain), ''recordStatus'' (''Valid'', ''Invalid'', or ''Not Found''), ''domainPolicy'' (the p= tag value such as ''none'', ''quarantine'', ''reject'', or empty string if not found), ''reportingEnabled'' (true if rua or ruf tags are present), and ''rawRecord'' (the full TXT record string, or empty string if none). A ''Valid'' record has both v=DMARC1 and a p= tag. ''Invalid'' means a record was found but is missing one of those required tags. ''Not Found'' means no TXT record exists at _dmarc.{domain}. DNS failures for a specific domain are returned as ''Not Found'' rather than errors. A 400 is only returned if the domains array is empty or every entry is blank. A 422 is returned if the ''domains'' field is missing from the body or is not an array.'
      x-guidance: 'Call this endpoint with POST and a JSON body containing a ''domains'' array of bare domain names (no http:// or www), e.g. {"domains": ["example.com", "mycompany.org"]}. Comma-separated strings inside an array entry are also tolerated and will be split. Each domain in the response will have: ''domain'' (the input domain), ''recordStatus'' (''Valid'', ''Invalid'', or ''Not Found''), ''domainPolicy'' (the p= tag value such as ''none'', ''quarantine'', ''reject'', or empty string if not found), ''reportingEnabled'' (true if rua or ruf tags are present), and ''rawRecord'' (the full TXT record string, or empty string if none). A ''Valid'' record has both v=DMARC1 and a p= tag. ''Invalid'' means a record was found but is missing one of those required tags. ''Not Found'' means no TXT record exists at _dmarc.{domain}. DNS failures for a specific domain are returned as ''Not Found'' rather than errors. A 400 is only returned if the domains array is empty or every entry is blank. A 422 is returned if the ''domains'' field is missing from the body or is not an array.'
      x-payment-info:
        price:
          fixed:
            mode: fixed
            currency: USD
            amount: '0.01'
        protocols:
        - x402: {}
components:
  schemas:
    Request:
      properties:
        domains:
          items:
            type: string
          type: array
          title: Domains
          description: 'A list of one or more domain names to check. Use bare domain names only — no http://, https://, or www. Example: ["onescales.com", "hillms.com"]'
      type: object
      required:
      - domains
      title: Request
      example:
        domains:
        - onescales.com
        - hillms.com
        - google.com
    DomainResult:
      properties:
        domain:
          type: string
          title: Domain
          description: The domain name that was checked.
        recordStatus:
          type: string
          title: Recordstatus
          description: Whether the DMARC record is 'Valid', 'Invalid', or 'Not Found'.
        domainPolicy:
          type: string
          title: Domainpolicy
          description: 'The email handling policy from the DMARC record: ''none'', ''quarantine'', ''reject'', or empty if not found.'
        reportingEnabled:
          type: boolean
          title: Reportingenabled
          description: True if the domain has reporting addresses set up (rua or ruf tags present).
        rawRecord:
          type: string
          title: Rawrecord
          description: The full raw DMARC record text, or empty string if no record was found.
      type: object
      required:
      - domain
      - recordStatus
      - domainPolicy
      - reportingEnabled
      - rawRecord
      title: DomainResult
      example:
        domain: onescales.com
        domainPolicy: reject
        rawRecord: v=DMARC1; p=reject; rua=mailto:dmarc@onescales.com;
        recordStatus: Valid
        reportingEnabled: true
    Response:
      properties:
        api_version:
          type: string
          title: Api Version
          description: API version
          default: 1.0.0
        results:
          items:
            $ref: '#/components/schemas/DomainResult'
          type: array
          title: Results
          description: One result entry for each domain you submitted, in the same order.
        total:
          type: integer
          title: Total
          description: Total number of domains checked.
        valid_count:
          type: integer
          title: Valid Count
          description: Number of domains with a valid DMARC record.
        invalid_count:
          type: integer
          title: Invalid Count
          description: Number of domains with a DMARC record that is missing required fields.
        not_found_count:
          type: integer
          title: Not Found Count
          description: Number of domains with no DMARC record found.
      type: object
      required:
      - results
      - total
      - valid_count
      - invalid_count
      - not_found_count
      title: Response
      example:
        api_version: 1.0.0
        invalid_count: 0
        not_found_count: 1
        results:
        - domain: onescales.com
          domainPolicy: reject
          rawRecord: v=DMARC1; p=reject; rua=mailto:dmarc@onescales.com;
          recordStatus: Valid
          reportingEnabled: true
        - domain: hillms.com
          domainPolicy: ''
          rawRecord: ''
          recordStatus: Not Found
          reportingEnabled: false
        total: 2
        valid_count: 1
  securitySchemes:
    siwx:
      type: apiKey
      in: header
      name: SIGN-IN-WITH-X
      description: CAIP-122 wallet signature for repeat access after payment
x-payment-accepts:
- scheme: exact
  network: eip155:8453
  payTo: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
  asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
- scheme: exact
  network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
  payTo: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b
  asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v