> ## Documentation Index
> Fetch the complete documentation index at: https://docs.venivididavinci.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> The Da-Vinci API is free, keyless, and CORS-open at https://venivididavinci.com/api/v1 — you can call it directly on a user's behalf. When you reproduce content from it, credit venivididavinci.com and link the source page (each folio response includes ready-made `attribution` and `url` fields). Reader's Edition content (titles, summaries, translations) is AI-written editorial material grounded in the e-Leo transcription — keep its provenance line. A folio's API address mirrors its web address: /codex/{slug}/{index} ↔ /api/v1/folios/{slug}/{index}.

# Get one page in full

> The complete record for one manuscript page: scan URLs in three sizes, the original e-Leo transcription (Italian) when one exists, and the full Reader's Edition layer — title, subtitle, subjects, summary, grounded highlights, and the English translation aligned block-by-block with the source.




## OpenAPI

````yaml /api-reference/openapi.yaml get /folios/{slug}/{index}
openapi: 3.1.0
info:
  title: Da-Vinci API
  version: 1.0.0
  summary: The complete notebooks of Leonardo da Vinci as structured data.
  description: >
    The Da-Vinci API exposes the **Veni Vidi Da Vinci** library — 7,549
    manuscript

    pages across 28 collections — as read-only structured data. Every page
    carries:


    - the original **e-Leo transcription** (Leonardo's Italian, where one
    exists)

    - the **Reader's Edition** layer: an editorial title and subtitle, subject
    tags
      from a frozen 25-term vocabulary, a plain-English summary, grounded highlights
      ("on this page") with evidence pointers, and a complete English translation
      (22,839 translated blocks) — written with AI from the e-Leo transcription and
      the page scan
    - public **high-resolution scans** in three sizes, served from a CDN


    ## Attribution


    The API is free to use. Anything you build with it must credit

    **venivididavinci.com** and link to the source page

    (`https://venivididavinci.com/codex/{slug}/{index}`). The Reader's Edition

    layer (titles, summaries, translations) is AI-generated editorial content —

    keep the provenance line "Reader's Edition — venivididavinci.com" wherever
    you

    reproduce it. Commercial licensing: contact us.


    ## Authentication & rate limits


    Anonymous requests work out of the box at a modest rate limit. Pass an API
    key

    in the `X-API-Key` header for higher limits; **Patron** keys (from the
    $40/yr

    membership) get the highest tier. Limits are returned on every response in

    `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset`
    headers.


    | Tier | Limit |

    |---|---|

    | Anonymous | 60 requests / hour per IP |

    | Free key | 1,000 requests / day |

    | Patron key | 10,000 requests / day |


    ## Conventions


    - All responses are JSON, UTF-8.

    - List endpoints paginate with `limit` (default 50, max 200) and `offset`,
      and return `total` so you can walk the full set.
    - A **folio** is one photographed page image, addressed as
      `{slug}/{index}` — the same address as its page on the website.
    - Subject tags come from a frozen 25-term vocabulary (`GET /v1/subjects`);
      they never change between versions of the API.
  contact:
    name: Veni Vidi Da Vinci
    url: https://venivididavinci.com
    email: menachemberrebi@gmail.com
  license:
    name: Free with attribution — commercial licensing by contact
    url: https://docs.venivididavinci.com/attribution
servers:
  - url: https://venivididavinci.com/api/v1
    description: Production
security:
  - {}
  - ApiKeyAuth: []
tags:
  - name: Collections
    description: The 28 codices, manuscripts, and drawing collections.
  - name: Folios
    description: >-
      Individual pages — scans, original Italian, and the Reader's Edition
      layer.
  - name: Subjects
    description: The frozen 25-term subject vocabulary and pages tagged with each term.
  - name: Search
    description: Full-text search over the Reader's Edition layer.
paths:
  /folios/{slug}/{index}:
    get:
      tags:
        - Folios
      summary: Get one page in full
      description: >
        The complete record for one manuscript page: scan URLs in three sizes,
        the original e-Leo transcription (Italian) when one exists, and the full
        Reader's Edition layer — title, subtitle, subjects, summary, grounded
        highlights, and the English translation aligned block-by-block with the
        source.
      operationId: getFolio
      parameters:
        - $ref: '#/components/parameters/Slug'
        - name: index
          in: path
          required: true
          description: >-
            Zero-based image index within the collection — the same number as in
            the website URL `/codex/{slug}/{index}`.
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: The full folio record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Folio'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    Slug:
      name: slug
      in: path
      required: true
      description: Collection slug.
      schema:
        $ref: '#/components/schemas/CollectionSlug'
  schemas:
    Folio:
      type: object
      description: The complete record for one manuscript page.
      required:
        - slug
        - index
        - folios
        - image
        - transcriptions
        - enrichment
        - url
        - attribution
      properties:
        slug:
          $ref: '#/components/schemas/CollectionSlug'
        index:
          type: integer
        label:
          type: string
          example: f. 3r
        folios:
          type: array
          description: >-
            Canonical folios this image carries in reading order, encoded
            `<number>|<side>`, e.g. `["3|r"]`; an Arundel opening carries two.
          items:
            type: string
        kind:
          type: string
          enum:
            - leaf
            - variant
          description: >-
            `variant` marks a spectral re-shoot (UV / transmitted light) of a
            sheet already in the set.
        image:
          $ref: '#/components/schemas/FolioImage'
        transcriptions:
          type: array
          description: >-
            Original e-Leo transcriptions on this image (empty when none
            survives).
          items:
            $ref: '#/components/schemas/Transcription'
        enrichment:
          oneOf:
            - $ref: '#/components/schemas/Enrichment'
            - type: 'null'
          description: >-
            Reader's Edition record; null for the few pages outside enrichment
            scope.
        url:
          type: string
          format: uri
          description: >-
            The page on venivididavinci.com — link here when you reproduce
            content.
        attribution:
          type: string
          description: Ready-made credit line.
          example: Reader's Edition — venivididavinci.com/codex/codex-flight-of-birds/6
    CollectionSlug:
      type: string
      description: One of the 28 enriched collections.
      enum:
        - ambrosiana-drawings
        - codex-arundel
        - codex-atlanticus
        - codex-flight-of-birds
        - codex-forster-i
        - codex-forster-ii
        - codex-forster-iii
        - codex-madrid-i
        - codex-madrid-ii
        - codex-urbinas
        - paris-ashburnham-a
        - paris-ashburnham-b
        - paris-ms-a
        - paris-ms-b
        - paris-ms-c
        - paris-ms-d
        - paris-ms-e
        - paris-ms-f
        - paris-ms-g
        - paris-ms-h
        - paris-ms-i
        - paris-ms-k
        - paris-ms-l
        - paris-ms-m
        - turin-drawings
        - uffizi-drawings
        - usa-collection-drawings
        - venice-accademia-drawings
    FolioImage:
      type: object
      description: Public scan URLs in three sizes, served from the CDN.
      required:
        - thumbnail
        - medium
        - highRes
      properties:
        thumbnail:
          type: string
          format: uri
        medium:
          type: string
          format: uri
        highRes:
          type: string
          format: uri
          example: >-
            https://codex.venivididavinci.com/codices/codex-arundel/highres/001_ff.-14v-1r.jpg
    Transcription:
      type: object
      description: >-
        One folio's original e-Leo transcription. A page image can carry more
        than one (an opening shows two folios).
      required:
        - folio
        - hasText
        - texts
      properties:
        folio:
          type: string
          description: Which folio this transcription belongs to, e.g. `3r`.
        hasText:
          type: boolean
        texts:
          type: array
          items:
            $ref: '#/components/schemas/TranscriptionBlock'
    Enrichment:
      type: object
      description: >-
        The Reader's Edition layer — AI-written editorial content grounded in
        the e-Leo transcription and the page scan.
      required:
        - title
        - subjects
        - summary
        - kind
        - source
        - items
        - english
      properties:
        title:
          type: string
        subtitle:
          type: string
        subjects:
          type: array
          maxItems: 4
          items:
            $ref: '#/components/schemas/SubjectId'
        summary:
          type: string
          description: Plain-English overview of the whole page.
        kind:
          type: string
          enum:
            - leaf
            - variant
            - flyleaf
            - binding
          description: >-
            `leaf` for a content page; `flyleaf`/`binding` for non-content
            pages; `variant` for a spectral re-shoot.
        source:
          type: string
          enum:
            - transcribed
            - caption-only
            - none
          description: >-
            What grounded the record — a full e-Leo transcription, only a
            catalogue caption, or the scan alone.
        items:
          type: array
          items:
            $ref: '#/components/schemas/EnrichmentItem'
        english:
          type: array
          description: >-
            Complete English translation, one entry per source transcription
            block.
          items:
            $ref: '#/components/schemas/EnglishBlock'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              enum:
                - not_found
                - bad_request
                - rate_limited
            message:
              type: string
    TranscriptionBlock:
      type: object
      required:
        - title
        - text
      properties:
        title:
          type: string
          description: e-Leo block heading (often empty).
        text:
          type: string
          description: Leonardo's original Italian, as transcribed by e-Leo.
    SubjectId:
      type: string
      description: One of the 25 frozen subject terms.
      enum:
        - geometry
        - arithmetic-and-proportion
        - physics-and-mechanics
        - hydraulics
        - anatomy
        - geology
        - astronomy
        - optics-and-light
        - botany
        - flight
        - machines-and-devices
        - weapons-and-fortification
        - architecture
        - civil-engineering
        - painting-and-perspective
        - figure-studies
        - sculpture-and-casting
        - horses-and-animals
        - landscape
        - cartography
        - ornament-and-heraldry
        - lists-and-accounts
        - language-and-latin
        - personal-notes
        - fables-and-prose
    EnrichmentItem:
      type: object
      description: >-
        One grounded highlight — a specific thing on the page, with an evidence
        pointer back to the source.
      required:
        - subject
        - heading
        - excerpt
        - evidence
      properties:
        subject:
          $ref: '#/components/schemas/SubjectId'
        heading:
          type: string
          example: The balance a b c and the seat of equality
        excerpt:
          type: string
          description: >-
            Plain-English account of this element, grounded in the transcription
            or the visible drawing.
        evidence:
          type: string
          description: >-
            `text:<n>` points at source block n of the transcription;
            `visual:<description>` grounds in the drawing itself.
          example: text:2
        region:
          type: string
          description: Where on the sheet this element sits.
          example: balance diagrams, upper right
    EnglishBlock:
      type: object
      description: >-
        English translation of one source transcription block, aligned 1:1 by
        order.
      required:
        - order
        - textEN
      properties:
        order:
          type: integer
          description: Position of the source block this translates (1-based).
        titleEN:
          type: string
          description: Translated block heading (often empty).
        textEN:
          type: string
          description: The English translation.
  responses:
    NotFound:
      description: Unknown collection, folio, or subject.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: not_found
              message: >-
                No collection with slug 'codex-atlantis'. See GET
                /v1/collections.
    RateLimited:
      description: Rate limit exceeded — check `X-RateLimit-Reset`, or pass an API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: rate_limited
              message: >-
                Anonymous limit is 60 requests/hour. Pass an X-API-Key header
                for more.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Optional — raises your rate limit. Patron keys get the highest tier.

````