Context.dev Parsing API

The Parsing API from Context.dev — 1 operation(s) for parsing.

Operations 1

POST /parse Parse Bytes

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/contextdev-parsing-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

contextdev-parsing-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Context Parsing API
  description: API for retrieving context data from any website
  version: 1.0.0
servers:
- url: https://api.context.dev/v1
tags:
- name: Parsing
paths:
  /parse:
    post:
      summary: Parse Bytes
      description: Converts raw text, source code, web/data, PDF, Microsoft Office, and image bytes into LLM-usable Markdown.
      requestBody:
        required: true
        description: Raw file bytes. The request body must not exceed 25 MiB.
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
          application/pdf:
            schema:
              type: string
              format: binary
          '*/*':
            schema:
              type: string
              format: binary
      security:
      - bearerAuth: []
      tags:
      - Parsing
      x-mint:
        content: <Badge color="blue">1 Credit</Badge>
        title: Parse Bytes
        sidebarTitle: Parse Bytes
        description: Convert raw document bytes into Markdown
      parameters:
      - schema:
          type: string
          enum:
          - txt
          - text
          - md
          - markdown
          - html
          - htm
          - xhtml
          - xml
          - rss
          - atom
          - csv
          - tsv
          - yaml
          - yml
          - py
          - java
          - js
          - jsx
          - mjs
          - cjs
          - json
          - jsonl
          - ndjson
          - php
          - sh
          - bash
          - zsh
          - fish
          - rb
          - ts
          - tsx
          - rtf
          - srt
          - css
          - scss
          - less
          - styl
          - sass
          - svg
          - pdf
          - docx
          - doc
          - xlsx
          - xlsm
          - xlsb
          - xltx
          - xltm
          - xls
          - pptx
          - pptm
          - ppsx
          - ppsm
          - potx
          - potm
          - ppt
          - pps
          - pot
          - jpg
          - jpeg
          - jpe
          - png
          - gif
          - bmp
          - tiff
          - tif
          - webp
          - ppm
          - pbm
          - pgm
          - pnm
          description: Optional file extension hint, such as pdf, docx, xlsx, pptx, html, json, csv, md, py, rtf, jpg, png, or txt.
        required: false
        description: Optional file extension hint, such as pdf, docx, xlsx, pptx, html, json, csv, md, py, rtf, jpg, png, or txt.
        name: extension
        in: query
      - schema:
          anyOf:
          - type: boolean
          - type: string
            enum:
            - 'true'
            - 'false'
          default: true
          description: Preserve hyperlinks in Markdown output
        required: false
        description: Preserve hyperlinks in Markdown output
        name: includeLinks
        in: query
      - schema:
          anyOf:
          - type: boolean
          - type: string
            enum:
            - 'true'
            - 'false'
          default: false
          description: Include image references in Markdown output
        required: false
        description: Include image references in Markdown output
        name: includeImages
        in: query
      - schema:
          anyOf:
          - type: boolean
          - type: string
            enum:
            - 'true'
            - 'false'
          default: true
          description: Shorten base64-encoded image data in the Markdown output
        required: false
        description: Shorten base64-encoded image data in the Markdown output
        name: shortenBase64Images
        in: query
      - schema:
          anyOf:
          - type: boolean
          - type: string
            enum:
            - 'true'
            - 'false'
          default: false
          description: Extract only the main content from HTML-like inputs
        required: false
        description: Extract only the main content from HTML-like inputs
        name: useMainContentOnly
        in: query
      - schema:
          anyOf:
          - type: boolean
          - type: string
            enum:
            - 'true'
            - 'false'
          default: false
          description: When true for PDF inputs, detect and OCR images embedded in the selected pages, inserting recognized text at each image's position in page reading order while preserving the PDF text layer. pdf.start/pdf.end limit the inclusive page range. When false, all OCR is disabled, including the automatic scanned-PDF fallback.
        required: false
        description: When true for PDF inputs, detect and OCR images embedded in the selected pages, inserting recognized text at each image's position in page reading order while preserving the PDF text layer. pdf.start/pdf.end limit the inclusive page range. When false, all OCR is disabled, including the automatic scanned-PDF fallback.
        name: ocr
        in: query
      - schema:
          type: object
          properties:
            start:
              type: integer
              minimum: 1
              description: First 1-based PDF page to parse. When omitted, parsing starts at the first page.
            end:
              type: integer
              minimum: 1
              description: Last 1-based PDF page to parse. When omitted, parsing ends at the last page. Must be greater than or equal to start when both are provided.
          default: {}
          additionalProperties: false
          description: 'PDF page-range options as a JSON object, e.g. {"start": 2, "end": 5}.'
        required: false
        description: 'PDF page-range options as a JSON object, e.g. {"start": 2, "end": 5}.'
        name: pdf
        in: query
      - schema:
          type: string
          minLength: 1
          maxLength: 100
          description: Optional client identifier used for usage attribution.
        required: false
        description: Optional client identifier used for usage attribution.
        name: client
        in: query
      - $ref: '#/components/parameters/RequestTags'
      responses:
        '200':
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                    - true
                    description: Indicates success
                  markdown:
                    type: string
                    description: Input bytes converted to GitHub Flavored Markdown
                  type:
                    type: string
                    enum:
                    - html
                    - xml
                    - json
                    - jsonl
                    - text
                    - csv
                    - tsv
                    - markdown
                    - yaml
                    - python
                    - java
                    - javascript
                    - php
                    - shell
                    - ruby
                    - typescript
                    - rtf
                    - srt
                    - css
                    - scss
                    - less
                    - stylus
                    - sass
                    - svg
                    - pdf
                    - docx
                    - doc
                    - xlsx
                    - xls
                    - pptx
                    - ppt
                    - jpg
                    - png
                    - gif
                    - bmp
                    - tiff
                    - webp
                    - ppm
                    - pbm
                    - pgm
                    - pnm
                    description: Detected content type used for parsing
                  key_metadata:
                    $ref: '#/components/schemas/KeyMetadata'
                required:
                - success
                - markdown
                - type
        '400':
          description: Invalid input or no parseable content
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  error_code:
                    type: string
                    enum:
                    - INPUT_VALIDATION_ERROR
                    - WEBSITE_ACCESS_ERROR
                  key_metadata:
                    $ref: '#/components/schemas/KeyMetadata'
        '413':
          description: Request body exceeds the 25 MiB upload limit
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  error_code:
                    type: string
                    enum:
                    - INPUT_VALIDATION_ERROR
        '415':
          description: Unsupported content type
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  error_code:
                    type: string
                    enum:
                    - UNSUPPORTED_CONTENT
                  key_metadata:
                    $ref: '#/components/schemas/KeyMetadata'
        '500':
          description: Internal server error
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  error_code:
                    type: string
                    enum:
                    - INTERNAL_ERROR
                  key_metadata:
                    $ref: '#/components/schemas/KeyMetadata'
      x-codeSamples:
      - lang: JavaScript
        source: "import ContextDev from 'context.dev';\n\nconst client = new ContextDev({\n  apiKey: process.env['CONTEXT_DEV_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.parse.handle(fs.createReadStream('path/to/file'));\n\nconsole.log(response.markdown);"
      - lang: Python
        source: "import os\nfrom context.dev import ContextDev\n\nclient = ContextDev(\n    api_key=os.environ.get(\"CONTEXT_DEV_API_KEY\"),  # This is the default and can be omitted\n)\nresponse = client.parse.handle(\n    body=b\"Example data\",\n)\nprint(response.markdown)"
      - lang: Go
        source: "package main\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/context-dot-dev/context-go-sdk\"\n\t\"github.com/context-dot-dev/context-go-sdk/option\"\n)\n\nfunc main() {\n\tclient := contextdev.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Parse.Handle(\n\t\tcontext.TODO(),\n\t\tio.Reader(bytes.NewBuffer([]byte(\"Example data\"))),\n\t\tcontextdev.ParseHandleParams{},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Markdown)\n}\n"
      - lang: Ruby
        source: 'require "context_dev"


          context_dev = ContextDev::Client.new(api_key: "My API Key")


          response = context_dev.parse.handle(body: StringIO.new("Example data"))


          puts(response)'
      - lang: PHP
        source: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse ContextDev\\Client;\nuse ContextDev\\Core\\FileParam;\nuse ContextDev\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('CONTEXT_DEV_API_KEY') ?: 'My API Key');\n\ntry {\n  $response = $client->parse->handle(\n    FileParam::fromString('Example data', filename: uniqid('file-upload-', true)),\n  );\n\n  var_dump($response);\n} catch (APIException $e) {\n  echo $e->getMessage();\n}"
      - lang: CLI
        source: "context-dev parse handle \\\n  --api-key 'My API Key' \\\n  --body 'Example data'"
components:
  parameters:
    RequestTags:
      name: tags
      in: query
      required: false
      style: form
      explode: false
      schema:
        $ref: '#/components/schemas/RequestTags'
      description: Optional comma-separated caller-defined tags for tracking this request. Tags are recorded on the request's usage log and can be used to filter usage on the dashboard usage page. Up to 20 tags, each 1-50 characters.
      example: production,team-alpha
  schemas:
    RequestTags:
      type: array
      items:
        type: string
        minLength: 1
        maxLength: 50
      maxItems: 20
      description: Optional caller-defined tags for tracking this request. Tags are recorded on the request's usage log and can be used to filter usage on the dashboard usage page. Up to 20 tags, each 1-50 characters.
      example:
      - production
      - team-alpha
    KeyMetadata:
      type: object
      properties:
        credits_consumed:
          type: integer
          description: The number of credits consumed by this request.
        credits_remaining:
          type: integer
          description: The number of credits remaining for your organization after this request.
      required:
      - credits_consumed
      - credits_remaining
      description: Metadata about the API key used for the request. Included in every response whenever a valid API key is provided, even when the response status is not 200.
  headers:
    RateLimitReset:
      description: Unix timestamp in seconds when the current rate-limit window resets. Returned when the authenticated API key has a per-minute rate limit.
      schema:
        type: integer
    RateLimitLimit:
      description: Maximum requests allowed in the current fixed one-minute window. Returned when the authenticated API key has a per-minute rate limit.
      schema:
        type: integer
        minimum: 1
    RateLimitRemaining:
      description: Requests remaining in the current fixed one-minute window. Returned when the authenticated API key has a per-minute rate limit.
      schema:
        type: integer
        minimum: 0
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer