Craft Quantities Benchmark API

The Construction Quantities Benchmark: the calculators' test vectors as questions in both unit systems, with their answers, CC BY 4.0.

GitHub OpenAPI

Operations 1

1 of 1 operations are conformant: apis.io called them with no credentials and the responses matched this contract. Checked 2026-11-12. how this works · status file

GET /benchmark A page of the Construction Quantities Benchmark, or one calculator's items conformant #

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/craftquantities-com:craftquantities-com-benchmark-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

craftquantities-com-benchmark-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Craftquantities Com Benchmark API
  version: 1.6.0
  contact:
    url: https://craftquantities.com/api/
  license:
    name: CC BY 4.0
    url: https://creativecommons.org/licenses/by/4.0/
  description: 'Operations tagged Benchmark across 2 of this provider''s published API definitions: craftquantities-com-openapi.json, craftquantities-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.craftquantities.com/v1
tags:
- name: Benchmark
  description: 'The Construction Quantities Benchmark: the calculators'' test vectors as questions in both unit systems, with their answers, CC BY 4.0.'
paths:
  /benchmark:
    get:
      operationId: getBenchmark
      summary: A page of the Construction Quantities Benchmark, or one calculator's items
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: 'Which page of the benchmark, from 1: each page holds the items of a few calculators, in slug order. 1 when left out.'
      - name: calculator
        in: query
        required: false
        schema:
          type: string
          pattern: ^[a-z0-9][a-z0-9-]{1,119}$
          description: One calculator's items only, by its slug, such as concrete-calculator.
      - name: detail
        in: query
        required: false
        schema:
          type: string
          enum:
          - full
          - summary
          default: full
          description: 'full (the default): the whole answer. summary: the result lines, the citation line and the page only — fewer tokens to read.'
        description: 'summary: the result lines, the citation and the page only (fewer tokens); full, the default: the whole answer. A POST body may carry detail instead.'
      - name: format
        in: query
        required: false
        schema:
          type: string
          enum:
          - json
          - md
        description: 'md: the engine''s Markdown report as text/markdown (or send Accept: text/markdown); json, the default.'
      responses:
        '200':
          description: The dataset's edition, download and citation, and the page's items.
          content:
            application/json:
              schema:
                type: object
                anyOf:
                - type: object
                  required:
                  - engine
                  - dataset
                  - items
                  - excluded
                  properties:
                    engine:
                      type: object
                    dataset:
                      type: object
                      required:
                      - name
                      - id
                      - version
                      - edition
                      - items
                      - pages
                      - download
                      - method
                      - scoring
                      - licence
                      - status
                      - citation
                      properties:
                        name:
                          type: string
                        id:
                          type: string
                        version:
                          type: string
                          description: The method and fields version.
                        edition:
                          type: string
                          description: 'The first twelve hex digits of the JSONL file''s SHA-256: which content a citation means.'
                        currentTo:
                          type: string
                        items:
                          type: number
                        calculators:
                          type: number
                        vectors:
                          type: number
                        excluded:
                          type: object
                          description: 'Vectors left out, by reason: money (the calculator takes or returns a price), partial-vector (its figure needs an input left undefined), refused, no-figure.'
                          properties:
                            money:
                              type: number
                            partial-vector:
                              type: number
                            refused:
                              type: number
                            no-figure:
                              type: number
                        pages:
                          type: number
                        pageSize:
                          type: string
                        download:
                          type: object
                          required:
                          - jsonl
                          - manifest
                          properties:
                            jsonl:
                              type: string
                            manifest:
                              type: string
                            bytes:
                              type: number
                            sha256:
                              type: string
                        method:
                          type: string
                        scoring:
                          type: string
                        licence:
                          type: object
                          required:
                          - name
                          - url
                          - attribution
                          properties:
                            name:
                              type: string
                            url:
                              type: string
                            attribution:
                              type: string
                        status:
                          type: string
                        citation:
                          type: object
                          required:
                          - author
                          - title
                          - url
                          - formats
                          - accessDate
                          properties:
                            author:
                              type: string
                            title:
                              type: string
                            version:
                              anyOf:
                              - type: string
                              - type: 'null'
                            sourcesChecked:
                              anyOf:
                              - type: string
                              - type: 'null'
                            url:
                              type: string
                            accessDate:
                              anyOf:
                              - type: string
                              - type: 'null'
                            formats:
                              type: object
                              required:
                              - plain
                              - apa
                              - harvard
                              - bibtex
                              properties:
                                plain:
                                  type: string
                                apa:
                                  type: string
                                harvard:
                                  type: string
                                bibtex:
                                  type: string
                    page:
                      anyOf:
                      - type: integer
                      - type: 'null'
                    nextPage:
                      type: integer
                    calculator:
                      type: string
                    calculators:
                      type: array
                      items:
                        type: string
                    items:
                      type: array
                      items:
                        type: object
                        required:
                        - id
                        - dataset
                        - calculator
                        - case
                        - task
                        - inputs
                        - prompt
                        - answer
                        - steps
                        - allowance
                        - confidence
                        properties:
                          id:
                            type: string
                            description: The calculator's slug and the vector's position among its test cases, such as concrete-calculator/1.
                          dataset:
                            type: string
                          calculator:
                            type: object
                            required:
                            - slug
                            - title
                            - category
                            - version
                            - url
                            properties:
                              slug:
                                type: string
                              title:
                                type: string
                              category:
                                type: string
                              version:
                                type: string
                              url:
                                type: string
                          case:
                            type: string
                            description: The test vector's own name.
                          task:
                            type: string
                            description: 'What is worked out: the calculator''s result label.'
                          inputs:
                            type: array
                            items:
                              type: object
                              required:
                              - id
                              - label
                              - value
                              - fromVector
                              - metric
                              - imperial
                              properties:
                                id:
                                  type: string
                                label:
                                  type: string
                                value:
                                  anyOf:
                                  - type: number
                                  - type: string
                                  description: In the base unit for a dimension (metres, m², litres, kg), the option value for a select.
                                baseUnit:
                                  type: string
                                fromVector:
                                  type: boolean
                                  description: False where the vector leaves the input out and it takes the value the page opens on.
                                metric:
                                  type: object
                                  required:
                                  - value
                                  - unit
                                  properties:
                                    value:
                                      anyOf:
                                      - type: number
                                      - type: string
                                    unit:
                                      anyOf:
                                      - type: string
                                      - type: 'null'
                                imperial:
                                  type: object
                                  required:
                                  - value
                                  - unit
                                  properties:
                                    value:
                                      anyOf:
                                      - type: number
                                      - type: string
                                    unit:
                                      anyOf:
                                      - type: string
                                      - type: 'null'
                          prompt:
                            type: object
                            required:
                            - metric
                            - imperial
                            properties:
                              metric:
                                type: string
                              imperial:
                                type: string
                          answer:
                            type: object
                            required:
                            - canonical
                            - metric
                            - imperial
                            properties:
                              canonical:
                                type: object
                                required:
                                - value
                                - unit
                                - toleranceDecimalPlaces
                                description: 'What the test vector pins, in the calculator''s own unit: met when |x − value| < 0.5 × 10^−toleranceDecimalPlaces.'
                                properties:
                                  value:
                                    type: number
                                  unit:
                                    type: string
                                  toleranceDecimalPlaces:
                                    type: number
                              metric:
                                type: object
                                required:
                                - value
                                - unit
                                - printed
                                - tolerance
                                properties:
                                  value:
                                    type: number
                                  unit:
                                    type: string
                                  printed:
                                    type: string
                                    description: The figure as the page prints it.
                                  tolerance:
                                    type: number
                                    description: An answer in this unit is right when it is within this of the value.
                              imperial:
                                type: object
                                required:
                                - value
                                - unit
                                - printed
                                - tolerance
                                properties:
                                  value:
                                    type: number
                                  unit:
                                    type: string
                                  printed:
                                    type: string
                                    description: The figure as the page prints it.
                                  tolerance:
                                    type: number
                                    description: An answer in this unit is right when it is within this of the value.
                          steps:
                            type: array
                            items:
                              type: object
                              required:
                              - label
                              - value
                              - unit
                              properties:
                                label:
                                  type: string
                                value:
                                  type: number
                                unit:
                                  type: string
                          allowance:
                            anyOf:
                            - type: object
                              required:
                              - label
                              - percent
                              properties:
                                label:
                                  type: string
                                percent:
                                  type: number
                            - type: 'null'
                          confidence:
                            type: string
                    excluded:
                      type: array
                      items:
                        type: object
                        required:
                        - id
                        - reason
                        properties:
                          id:
                            type: string
                          reason:
                            enum:
                            - money
                            - partial-vector
                            - refused
                            - no-figure
                    none:
                      type: string
                - type: object
                  required:
                  - detail
                  - tool
                  - title
                  - lines
                  - notes
                  - citation
                  - url
                  - open
                  - more
                  properties:
                    detail:
                      const: summary
                    tool:
                      type: string
                    title:
                      type: string
                    lines:
                      type: array
                      items:
                        type: object
                        additionalProperties:
                          type: string
                      description: The result lines, as the report's table gives them.
                    notes:
                      type: array
                      items:
                        type: string
                      description: 'What a professional must decide, when to call one, a false-friend warning, that adoption is local: kept in every summary.'
                    citation:
                      type: string
                      description: The one citation line, built from the answer's own data.
                    url:
                      anyOf:
                      - type: string
                      - type: 'null'
                    open:
                      anyOf:
                      - type: string
                      - type: 'null'
                    more:
                      anyOf:
                      - type: string
                      - type: 'null'
        '400':
          description: The request was refused; every problem is listed.
          content:
            application/problem+json:
              schema:
                type: object
                required:
                - title
                - status
                - problems
                properties:
                  type:
                    type: string
                  title:
                    type: string
                  status:
                    type: integer
                  problems:
                    type: array
                    items:
                      type: object
                      required:
                      - input
                      - problem
                      properties:
                        input:
                          type: string
                        problem:
                          type: string
                        accepted:
                          type: array
                          items:
                            type: string
                  didYouMean:
                    type: array
                    items:
                      type: string
        '404':
          description: The request was refused; every problem is listed.
          content:
            application/problem+json:
              schema:
                type: object
                required:
                - title
                - status
                - problems
                properties:
                  type:
                    type: string
                  title:
                    type: string
                  status:
                    type: integer
                  problems:
                    type: array
                    items:
                      type: object
                      required:
                      - input
                      - problem
                      properties:
                        input:
                          type: string
                        problem:
                          type: string
                        accepted:
                          type: array
                          items:
                            type: string
                  didYouMean:
                    type: array
                    items:
                      type: string
      tags:
      - Benchmark
    servers:
    - url: https://api.craftquantities.com/v1
externalDocs:
  url: https://craftquantities.com/api/
  description: The API documentation
x-refined-from:
- craftquantities-com-openapi.json
- craftquantities-com-openapi.yml