_done JSON API

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

Operations 1

POST /json Validate, repair, format, query, diff, convert, and canonicalize JSON in one call. #

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-json-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-json-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Validate, Repair, Convert, Query & Diff JSON API
  description: 'Every AI agent and developer runs into broken or confusing JSON constantly. This tool handles all the most common JSON headaches in one place: check if JSON is valid (with exact error location), fix near-JSON that has typos or formatting mistakes, pretty-print or minify, pull out specific values using a path expression, compare two JSON documents and see exactly what changed, convert to and from YAML or CSV, produce a byte-stable canonical form for hashing or signing, validate against a schema, and get size and structure statistics. Same input always gives the same output — fully predictable, no side effects.'
  version: 1.0.0
  contact:
    name: _done
    url: https://forms.gle/5KzuSFH7p8hHtDmz7
    email: info@underscoredone.com
  x-openapi-url: https://json-suite.underscoredone.com/openapi.json
  x-logo:
    url: https://underscoredone.com/logo.png
    altText: _done
  x-guidance: 'Send the ''op'' field to choose what to do. Use ''data_raw'' (a plain string) only for ''validate'' and ''repair'' — these two need the original broken text. Use ''data'' (actual parsed JSON) for all other operations: format, canonicalize, convert, query, diff, patch, schema, stats. For ''diff'' and ''patch'', put the first document in ''data'' and the second in ''options.data_b''. For ''query'', put your JSONPath expression (e.g. ''$.items[*].id'') in ''options.jsonpath'' or a JSON Pointer (e.g. ''/items/0/id'') in ''options.pointer''. For ''convert'', set ''options.to'' to ''yaml'', ''csv'', ''ndjson'', or ''json''. For ''schema'', put the JSON Schema object in ''options.schema''. For ''format'', set ''options.indent'' (number, default 2) and ''options.sort_keys'' (true/false). For ''canonicalize'', no extra options needed — output is RFC 8785 JCS bytes as a string. The ''repair'' operation is heuristic: it always returns ''fixes_applied'' so you can audit what changed. Check the ''valid'' field first in every response. On a 400 error, read ''detail'' for a plain-English explanation of what went wrong.'
  x-ai-instructions: 'Send the ''op'' field to choose what to do. Use ''data_raw'' (a plain string) only for ''validate'' and ''repair'' — these two need the original broken text. Use ''data'' (actual parsed JSON) for all other operations: format, canonicalize, convert, query, diff, patch, schema, stats. For ''diff'' and ''patch'', put the first document in ''data'' and the second in ''options.data_b''. For ''query'', put your JSONPath expression (e.g. ''$.items[*].id'') in ''options.jsonpath'' or a JSON Pointer (e.g. ''/items/0/id'') in ''options.pointer''. For ''convert'', set ''options.to'' to ''yaml'', ''csv'', ''ndjson'', or ''json''. For ''schema'', put the JSON Schema object in ''options.schema''. For ''format'', set ''options.indent'' (number, default 2) and ''options.sort_keys'' (true/false). For ''canonicalize'', no extra options needed — output is RFC 8785 JCS bytes as a string. The ''repair'' operation is heuristic: it always returns ''fixes_applied'' so you can audit what changed. Check the ''valid'' field first in every response. On a 400 error, read ''detail'' for a plain-English explanation of what went wrong.'
  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:
  - parsing
  - json
  - validate
  - repair
  - jsonpath
  - diff
  - canonicalize
  - convert
  - yaml
  - csv
  - json-schema
  - rfc8785
  - ai-agent
  - utility
  - api
  - pay-per-call
  - usdc
  - x402
  x-category: json
  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: 'Every AI agent and developer runs into broken or confusing JSON constantly. This tool handles all the most common JSON headaches in one place: check if JSON is valid (with exact error location), fix near-JSON that has typos or formatting mistakes, pretty-print or minify, pull out specific values using a path expression, compare two JSON documents and see exactly what changed, convert to and from YAML or CSV, produce a byte-stable canonical form for hashing or signing, validate against a schema, and get size and structure statistics. Same input always gives the same output — fully predictable, no side effects.'
    mime_type: application/json
    networks:
    - network: eip155:8453
      asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
      pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
    - network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
      asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
      pay_to: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b
servers:
- url: https://json-suite.underscoredone.com
  description: Production
tags:
- name: json
paths:
  /json:
    post:
      tags:
      - json
      summary: Validate, repair, format, query, diff, convert, and canonicalize JSON in one call.
      description: Process a JSON document using the chosen operation. Send op to pick what to do, data or data_raw for the input, and options for extra settings.
      operationId: handler_json_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
                    op: query
                    valid: true
                    matches:
                    - path: $.order.items[0].sku
                      value: BIL-CUE-07
                    - path: $.order.items[1].sku
                      value: BIL-CHALK-01
                    match_count: 2
        '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: 'Send the ''op'' field to choose what to do. Use ''data_raw'' (a plain string) only for ''validate'' and ''repair'' — these two need the original broken text. Use ''data'' (actual parsed JSON) for all other operations: format, canonicalize, convert, query, diff, patch, schema, stats. For ''diff'' and ''patch'', put the first document in ''data'' and the second in ''options.data_b''. For ''query'', put your JSONPath expression (e.g. ''$.items[*].id'') in ''options.jsonpath'' or a JSON Pointer (e.g. ''/items/0/id'') in ''options.pointer''. For ''convert'', set ''options.to'' to ''yaml'', ''csv'', ''ndjson'', or ''json''. For ''schema'', put the JSON Schema object in ''options.schema''. For ''format'', set ''options.indent'' (number, default 2) and ''options.sort_keys'' (true/false). For ''canonicalize'', no extra options needed — output is RFC 8785 JCS bytes as a string. The ''repair'' operation is heuristic: it always returns ''fixes_applied'' so you can audit what changed. Check the ''valid'' field first in every response. On a 400 error, read ''detail'' for a plain-English explanation of what went wrong.'
      x-guidance: 'Send the ''op'' field to choose what to do. Use ''data_raw'' (a plain string) only for ''validate'' and ''repair'' — these two need the original broken text. Use ''data'' (actual parsed JSON) for all other operations: format, canonicalize, convert, query, diff, patch, schema, stats. For ''diff'' and ''patch'', put the first document in ''data'' and the second in ''options.data_b''. For ''query'', put your JSONPath expression (e.g. ''$.items[*].id'') in ''options.jsonpath'' or a JSON Pointer (e.g. ''/items/0/id'') in ''options.pointer''. For ''convert'', set ''options.to'' to ''yaml'', ''csv'', ''ndjson'', or ''json''. For ''schema'', put the JSON Schema object in ''options.schema''. For ''format'', set ''options.indent'' (number, default 2) and ''options.sort_keys'' (true/false). For ''canonicalize'', no extra options needed — output is RFC 8785 JCS bytes as a string. The ''repair'' operation is heuristic: it always returns ''fixes_applied'' so you can audit what changed. Check the ''valid'' field first in every response. On a 400 error, read ''detail'' for a plain-English explanation of what went wrong.'
      x-payment-info:
        price:
          fixed:
            mode: fixed
            currency: USD
            amount: '0.01'
        protocols:
        - x402: {}
components:
  schemas:
    Request:
      properties:
        op:
          type: string
          title: Op
          description: 'What you want to do. Choose one of: validate, repair, format, canonicalize, convert, query, diff, patch, schema, stats.'
        data:
          anyOf:
          - {}
          - type: 'null'
          title: Data
          description: The JSON value you want to work with — can be an object, array, string, number, or anything valid. Required for all operations except validate and repair.
        data_raw:
          anyOf:
          - type: string
          - type: 'null'
          title: Data Raw
          description: The raw text you want to validate or repair. Use this instead of data only for validate and repair, because those need to see the original broken text exactly as-is.
        options:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Options
          description: 'Extra settings for the chosen operation. For example: indent, sort_keys, jsonpath, pointer, to (for convert), schema, data_b (for diff/patch). All optional — sensible defaults are used.'
      type: object
      required:
      - op
      title: Request
      example:
        data:
          order:
            id: A-1029
            items:
            - qty: 2
              sku: BIL-CUE-07
            - qty: 5
              sku: BIL-CHALK-01
        op: query
        options:
          jsonpath: $.order.items[*].sku
    Response:
      properties:
        api_version:
          type: string
          title: Api Version
          description: API version
          default: 1.0.0
        op:
          type: string
          title: Op
          description: The operation that was performed.
        valid:
          type: boolean
          title: Valid
          description: Whether the JSON is valid (for validate) or the operation succeeded.
          default: true
        error:
          anyOf:
          - type: string
          - type: 'null'
          title: Error
          description: A plain-English description of what went wrong, if the JSON is not valid.
        line:
          anyOf:
          - type: integer
          - type: 'null'
          title: Line
          description: The line number where the error was found, if known.
        column:
          anyOf:
          - type: integer
          - type: 'null'
          title: Column
          description: The column number where the error was found, if known.
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: The JSON path to the problem location, if known.
        result:
          anyOf:
          - {}
          - type: 'null'
          title: Result
          description: The output for format, canonicalize, convert, query (string), patch, and schema operations.
        repaired:
          anyOf:
          - type: string
          - type: 'null'
          title: Repaired
          description: The repaired JSON text, as a string.
        fixes_applied:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          title: Fixes Applied
          description: A list describing what kinds of fixes were made during repair.
        matches:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          title: Matches
          description: The list of values found by a query, each with its path and value.
        match_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Match Count
          description: How many values the query matched.
        equal:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Equal
          description: Whether the two JSON documents are identical.
        change_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Change Count
          description: How many differences were found between the two documents.
        patch:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          title: Patch
          description: The list of changes (RFC 6902 JSON Patch) that turn the first document into the second.
        stats:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Stats
          description: Size and structure statistics about the JSON document.
        schema_valid:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Schema Valid
          description: Whether the document passes the provided JSON Schema.
        schema_errors:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          title: Schema Errors
          description: A list of schema validation errors, if any.
      type: object
      required:
      - op
      title: Response
      example:
        api_version: 1.0.0
        match_count: 2
        matches:
        - path: $.order.items[0].sku
          value: BIL-CUE-07
        - path: $.order.items[1].sku
          value: BIL-CHALK-01
        op: query
        valid: true
  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