---
title: "Diagram, Math and Code Render API"
slug: diagram-math-code-render-api
url: https://apyhub.com/callable-labs/service/diagram-math-code-render-api
provider: Callable Labs
categories: [Developer Tools, Smart Generation]
tags: [code-rendering, diagram-rendering, math-rendering, mermaid, graphviz, tex, mermaid-api, graphviz-api, d2-diagram, vega-lite, latex-to-svg, mathjax, code-to-image, code-screenshot, syntax-highlighting, diagram-render]
auth: api_key
version: 1.0.0
service_type: sync
endpoints: 3
atoms: 50
mcp: true
---

# Diagram, Math and Code Render API

Render highlighted code, diagrams, or TeX as SVG, PNG, PDF, JPEG, or WebP. Returns image metadata, cache status, warnings, and timing info.

## Endpoints

| Method | URL | Description | Atoms |
| --- | --- | --- | --- |
| POST | `https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/code` | What it does Renders source code with Pygments highlighting and returns the rendered output plus me… | 50 |
| POST | `https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/diagram` | What it does Renders diagram-as-code source into an output image or JSON response. You send the dia… | 50 |
| POST | `https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/math` | What it does Renders a TeX expression into the requested output format using the fields in the requ… | 50 |

## Endpoint reference

### Render source code

`POST https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/code` · 50 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `scale` | body | number | no | Zoom the output 0.5–4×. Ignored when `width` is set. Raster and PDF output is capped at 8192×8192 px on the hosted plans (WebP 4096×4096); SVG has no ceiling. Default: `1`. Example: `2`. |
| `theme` | body | string | no | Pygments style name. Curated: `default`, `friendly`, `monokai`, `dracula`, `github-dark`, `solarized-dark`, `solarized-light`, `nord`, `one-dark`, `gruvbox-dark`; any other Pygments style name is acc… |
| `title` | body | any | no | Filename shown in the window bar (implies `window`). Example: `app.py`. |
| `width` | body | any | no | Target width in pixels (16–4096); height follows the aspect ratio and must stay within the same pixel ceiling. Overrides `scale`. Example: `1024`. |
| `format` | body | string | no | Output format. `json` returns a PNG data URI plus metadata and is the default; `svg`/`png`/`pdf`/`jpeg`/`webp` return the bytes. One of: json, svg, png, pdf, jpeg, webp. Default: `json`. Example: `sv… |
| `source` | body | string | yes | Source code. ≤ 64 KiB via POST, ≤ 8 KiB via GET, ≤ 2000 lines. Long listings fit as `format=svg` (no pixel ceiling); raster output is limited to 8192×8192 px (~380 lines at 1×). Example: `def add(a,… |
| `window` | body | boolean | no | Draw a macOS-style window title bar. Default: `false`. |
| `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. |
| `language` | body | any | no | Pygments language name, e.g. `python`; auto-detected when omitted. Example: `python`. |
| `background` | body | any | no | Background colour as `#rrggbb`/`#rgb`, a CSS name, or `transparent` for none. Example: `#ffffff`. |
| `line_numbers` | body | boolean | no | Print a line-number gutter. Default: `false`. |

#### Quickstart

Render a small snippet of source code with the default JSON output.

```bash
curl -X POST "https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/code" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "source": "def add(a, b):\n    return a + b"
  }'
```

#### What you'll get back

Returns a JSON object with rendering metadata such as `cache`, `width`, `engine`, `format`, `height`, `data_uri`, `warnings`, `queued_ms`, `render_ms`, `media_type`, and `engine_version`. The example output below shows the typical shape.

```json
{
  "format": "png",
  "media_type": "image/png",
  "width": 220,
  "height": 74,
  "data_uri": "data:image/png;base64,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",
  "warnings": [],
  "engine": "code",
  "engine_version": "2.21.0",
  "cache": "hit",
  "render_ms": 0,
  "queued_ms": 0
}
```

### Render a diagram

`POST https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/diagram` · 50 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `scale` | body | number | no | Zoom the output 0.5–4×. Ignored when `width` is set. Raster and PDF output is capped at 8192×8192 px on the hosted plans (WebP 4096×4096); SVG has no ceiling. Default: `1`. Example: `2`. |
| `theme` | body | any | no | Engine-specific theme. Mermaid: `default\|base\|dark\|forest\|neutral`. D2: a numeric theme id — `0` (neutral default), `1`, `3`, `4`, `5`, `8`, `101`, `200` (dark), `300`, `301`. Vega-Lite: `default\|dar… |
| `width` | body | any | no | Target width in pixels (16–4096); height follows the aspect ratio and must stay within the same pixel ceiling. Overrides `scale`. Example: `1024`. |
| `engine` | body | string | yes | Diagram engine: `mermaid`, `graphviz`, `d2` or `vegalite` (Vega-Lite JSON spec). One of: mermaid, graphviz, d2, vegalite. Example: `mermaid`. |
| `format` | body | string | no | Output format. `json` returns a PNG data URI plus metadata and is the default; `svg`/`png`/`pdf`/`jpeg`/`webp` return the bytes. One of: json, svg, png, pdf, jpeg, webp. Default: `json`. Example: `sv… |
| `layout` | body | any | no | Graphviz layout (`dot\|neato\|fdp\|sfdp\|circo\|twopi`) or D2 layout (`dagre\|elk`). Mermaid and Vega-Lite ignore it. Example: `dot`. |
| `source` | body | string | yes | Diagram source: Mermaid text, DOT, D2 or a Vega-Lite JSON spec. ≤ 64 KiB via POST, ≤ 8 KiB via GET. Vega-Lite specs must inline their data (`url` is refused); Graphviz attributes that read local file… |
| `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. |
| `background` | body | any | no | Background colour as `#rrggbb`/`#rgb`, a CSS name, or `transparent` for none. Example: `#ffffff`. |

#### Quickstart

Render a simple Mermaid diagram from source and get back a JSON response.

```bash
curl -X POST "https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/diagram" \
  -H 'apy-token: $APY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "engine": "mermaid",
    "source": "graph TD; A[Start] --> B{Ready?}; B -->|yes| C[Ship]; B -->|no| A;",
    "format": "json"
  }'
```

#### What you'll get back

Returns a JSON object with fields such as `cache` (string), `width` (integer), `engine` (string), `format` (string), `height` (integer), `data_uri` (string), `warnings` (array of strings), `queued_ms` (integer), `render_ms` (integer), `media_type` (string), and `engine_version` (string).

```json
{
  "format": "png",
  "media_type": "image/png",
  "width": 123,
  "height": 367,
  "data_uri": "data:image/png;base64,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",
  "warnings": [],
  "engine": "mermaid",
  "engine_version": "11.17.2",
  "cache": "hit",
  "render_ms": 0,
  "queued_ms": 0
}
```

### Render a TeX expression

`POST https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/math` · 50 atoms · accepts `application/json` · returns `application/json`

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `tex` | body | string | yes | TeX source, e.g. `\frac{a}{b}` or `\int_0^\infty e^{-x}\,dx`. ≤ 64 KiB via POST, ≤ 8 KiB via GET. Example: `\frac{a}{b}`. |
| `color` | body | any | no | Text colour as `#rrggbb`/`#rgb`. Example: `#1d4ed8`. |
| `scale` | body | number | no | Zoom the output 0.5–4×. Ignored when `width` is set. Raster and PDF output is capped at 8192×8192 px on the hosted plans (WebP 4096×4096); SVG has no ceiling. Default: `1`. Example: `2`. |
| `width` | body | any | no | Target width in pixels (16–4096); height follows the aspect ratio and must stay within the same pixel ceiling. Overrides `scale`. Example: `1024`. |
| `format` | body | string | no | Output format. `json` returns a PNG data URI plus metadata and is the default; `svg`/`png`/`pdf`/`jpeg`/`webp` return the bytes. One of: json, svg, png, pdf, jpeg, webp. Default: `json`. Example: `sv… |
| `display` | body | boolean | no | Display style (centred, larger) vs inline style. Default: `true`. |
| `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. |
| `font_size` | body | integer | no | Font size in pixels (6–96). Default: `16`. Example: `20`. |
| `background` | body | any | no | Background colour as `#rrggbb`/`#rgb`, a CSS name, or `transparent` for none. Example: `#ffffff`. |

#### Quickstart

Render a simple TeX expression as JSON using the required `tex` field.

```bash
curl -X POST "https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/math" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "tex": "\\frac{a}{b}"
}'
```

#### What you'll get back

Returns a JSON object with fields such as `cache` (`hit` or `miss`), `width` and `height` (integers), `engine` and `engine_version` (strings), `format` and `media_type` (strings), `data_uri` (string), `warnings` (array of strings), `queued_ms` and `render_ms` (integers), and, when present, `width`/`height` reflect the rendered output size.

```json
{
  "format": "png",
  "media_type": "image/png",
  "width": 18,
  "height": 33,
  "data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAhCAYAAADUIPtUAAABW0lEQVR4nO1Vy1XDMBAcggswJ67pAFMBzpFbOsBUQDqgBagAc+MGVIBTAU4FmBs3TAfsPq0iRehjvXCDeW/eOhvteD1eyQXiuCIuiCXxUeI9cXAXFhGRO+IpsSaOxJZ4QVznCC2JjQiNkhskdr6CA/jxJv/NrVwnsfYVzDy5UgSenPwZAt2EhOYSeytXw3TFj11NEWKBLyd3bQk1ML5tcQg/Pogr4jHxEuqVn8tvvsmDWxAyW6OCeUTtXe9bmBKajBl+Cf9Cadib9oZ4gjxsoOZtR6iFmpUcbCf8j84RHxcvwgZ7CPHmfIY5s6OIHf6Ddd1hDyFIN5spHaXM1uc0z1cVWxibIy58hfJqLWI8+Qtfh7GOaom3UNugIR7J9Q8UCSH2p7Vyn8j4rmm43zHt04CMjiop7LDbIaPPERqdyOBJf4c6biYLDVJUWt0sEfCHkXr9LYwnKwT8YXwDbINAQMEZMTgAAAAASUVORK5CYII=",
  "warnings": [],
  "engine": "mathjax",
  "engine_version": "3.2.2",
  "cache": "hit",
  "render_ms": 0,
  "queued_ms": 0
}
```

## About

## What it does
Code Diagram Math Renderer turns source text into rendered images or files for code snippets, diagrams, and TeX expressions. Send a code block, diagram source, or math formula, and get back a rendered asset with metadata such as width, height, format, engine, cache status, warnings, and timing information.

Use the code rendering endpoint when you need highlighted source code with optional line numbers, a theme, a title bar, background colour, and output control through scale, width, and format. It accepts source code plus optional language and theme hints, and can return JSON with a PNG data URI or bytes in SVG, PNG, PDF, JPEG, or WebP.

Use the diagram endpoint for Mermaid, Graphviz, D2, or Vega-Lite input. Provide the engine and source, and you can also set layout, theme, background, width, scale, and download behaviour. This is useful for turning architecture diagrams, flowcharts, and data visualisations into shareable assets for docs, pull requests, or generated reports.

Use the math endpoint to render TeX with MathJax. It supports colour, font size, display mode, background, width, scale, format, and download. That makes it a fit for documentation systems, educational content, and apps that need consistent formula rendering without bundling fonts or a browser renderer.

## Usage

Base URL: `https://api.eu.apyhub.com` (default region — see
`GET https://apyhub.com/api/public/regions` for the rest).

Authenticate with an ApyHub API key in the `apy-token` header.
Full docs and a live playground: https://apyhub.com/callable-labs/service/diagram-math-code-render-api
