apyhub
DATA EXTRACTION · DEVELOPER TOOLS

Convert Markdown to JSON API

Hosted on ApyHub

What it does

Markdown to JSON converts Markdown content into JSON output so you can parse documents without building your own renderer or tokenizer.

Send either raw Markdown text, a Markdown file upload, or a URL to a Markdown file. The service supports both inline JSON responses and downloadable JSON files, so you can choose the format that fits your workflow. For URL-based requests, the remote resource must respond with text/markdown or text/plain. For file uploads, the file must be text/markdown.

Use Markdown to JSON when you need to ingest docs, notes, README files, or content from CMS exports into a structured pipeline. It is a good fit for document processing jobs that store parsed output, sync content into internal tools, or hand off Markdown content to downstream validation and transformation steps.

Depending on the endpoint, the response is either a JSON array or an object containing a signed S3 data URL, or a downloadable JSON file. That gives you flexibility whether you want the parsed structure immediately in your app or as a file artifact for later processing.

▣ ENDPOINT 01 / 09
POST
File upload → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-file-json-raw
QUICKSTARTGUIDE

Quickstart

Upload a Markdown file to convert it into raw JSON.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-file-json-raw" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/file.md"

What you'll get back

Returns a JSON array. The array items are not further specified by the schema.

TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Markdown file to convert. Must have MIME type text/markdown.

About this endpoint

What it does

Uploads a Markdown file and converts it to JSON, returning the result inline as an array.

Request Body

ParameterTypeMandatoryDescription
fileStringYesMarkdown file to convert. Must have MIME type text/markdown.

Response

Returns a JSON array. The output schema does not define the array item structure, so the contents are not yet specified in the schema.

ParameterTypeMandatoryDescription
itemsObjectYesArray items are not described in the schema.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 02 / 09
POST
Raw Markdown → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-raw-json-url
QUICKSTARTGUIDE

Quickstart

Send raw Markdown in the request body to generate a JSON file URL.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-raw-json-url?output=my-document" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: text/plain" \
  --data-binary '# Title

- item 1
- item 2'

What you'll get back

Returns a JSON object with a required data string field containing a signed S3 URL for the generated JSON file.

{
  "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-json/file.json?..."
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Raw Markdown content.

About this endpoint

What it does

Converts raw Markdown content into JSON and returns a signed S3 URL where the generated JSON file can be downloaded.

Query Parameter(s)

AttributeTypeMandatoryDescription
outputStringNoOutput name. Default: sample-output.

Request Body

ParameterTypeMandatoryDescription
bodyStringYesRaw Markdown content.

Response

Returns a JSON object with a data string field containing a signed S3 URI for the generated JSON file.

ParameterTypeMandatoryDescription
dataStringYesSigned S3 URL for the generated JSON file. Valid for 5 minutes.

Query parameters

Name
Type
Description
outputOPTIONAL
string
DEFAULT sample-output

Body

Name
Type
Description
bodyREQUIRED
string
Raw Markdown content.
▣ ENDPOINT 03 / 09
POST
URL → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-url-json-file
QUICKSTARTGUIDE

Quickstart

Convert a Markdown file from a URL into a downloadable JSON file.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-url-json-file?output=my-document" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://assets.apyhub.com/samples/sample.md"}'

What you'll get back

Returns a binary response: a downloadable JSON file containing the parsed document structure.

TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
URL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain.

About this endpoint

What it does

Converts a Markdown document fetched from a URL into a JSON file and returns it as a downloadable binary response. The request body supplies the source url, and the optional output query parameter controls the downloaded file name.

Query Parameter(s)

AttributeTypeMandatoryDescription
outputStringNoOutput file name prefix. Default: sample-output.

Request Body

ParameterTypeMandatoryDescription
urlStringYesURL pointing to a Markdown file. Must be a valid URI. The remote resource must respond with Content-Type of text/markdown or text/plain.

Response

Returns a downloadable binary JSON file containing the parsed document structure. The response schema is a binary string.

ParameterTypeMandatoryDescription
binaryStringYesDownloadable JSON file containing the parsed document structure.

Query parameters

Name
Type
Description
outputOPTIONAL
string
DEFAULT sample-output

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 04 / 09
POST
URL → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-url-json-url
QUICKSTARTGUIDE

Quickstart

Convert a Markdown file from a public URL into JSON and return a signed download link.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-url-json-url?output=my-document" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://assets.apyhub.com/samples/sample.md"}'

What you'll get back

Returns a JSON object with a data string field containing a signed S3 URL for the generated JSON file, valid for 5 minutes.

{
  "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-json/file.json?..."
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
URL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain.

About this endpoint

What it does

Converts a Markdown file fetched from a remote URL into JSON and returns a signed S3 URL where the generated JSON file can be downloaded.

Query Parameter(s)

AttributeTypeMandatoryDescription
outputStringNoOutput filename prefix or name. Default: sample-output.

Request Body

ParameterTypeMandatoryDescription
urlStringYesURL pointing to a Markdown file. Must be a valid URI. The remote resource must respond with Content-Type: text/markdown or Content-Type: text/plain.

Response

Returns a JSON object with a data string field containing a signed S3 URL for the generated JSON file. The URL is valid for 5 minutes.

ParameterTypeMandatoryDescription
dataStringYesSigned S3 URL for the generated JSON file. Valid for 5 minutes.

Query parameters

Name
Type
Description
outputOPTIONAL
string
DEFAULT sample-output

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 05 / 09
POST
File upload → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-file-json-url
QUICKSTARTGUIDE

Quickstart

Upload a Markdown file to convert it into a JSON file and return a signed download URL.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-file-json-url" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/file.md"

What you'll get back

Returns a JSON object with a data string field — a signed S3 URL for the generated JSON file, valid for 5 minutes.

{
  "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-json/file.json?..."
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Markdown file to convert. Must have MIME type text/markdown.

About this endpoint

What it does

Converts an uploaded Markdown file into JSON and returns a signed S3 URL where the generated JSON file can be downloaded. The request sends the Markdown file in the body, and the response contains a single JSON data field with the output file URL.

Query Parameter(s)

AttributeTypeMandatoryDescription
outputStringNoOutput name for the generated file. Default: sample-output.

Request Body

ParameterTypeMandatoryDescription
fileStringYesMarkdown file to convert. Must have MIME type text/markdown.

Response

Returns a JSON object with a data string field containing a signed S3 URL for the generated JSON file. The URL is valid for 5 minutes.

ParameterTypeMandatoryDescription
dataStringYesSigned S3 URL for the generated JSON file. Valid for 5 minutes.

Query parameters

Name
Type
Description
outputOPTIONAL
string
DEFAULT sample-output

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 06 / 09
POST
Raw Markdown → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-raw-json-file
QUICKSTARTGUIDE

Quickstart

Send raw Markdown in the request body to get back a downloadable JSON file.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-raw-json-file?output=my-document" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: text/plain" \
  --data-binary #x27;# Title\n\n- item 1\n- item 2'

What you'll get back

Returns a binary file response containing the parsed document structure as JSON. The output schema is a downloadable JSON file, so the response body is not a JSON object.

TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Raw Markdown content.

About this endpoint

What it does

Converts raw Markdown content into a JSON file download. You send the Markdown text in the request body, and the endpoint returns a downloadable binary JSON file containing the parsed document structure.

Query Parameter(s)

AttributeTypeMandatoryDescription
outputStringNoOutput name for the generated file. Default: sample-output.

Request Body

ParameterTypeMandatoryDescription
bodyStringYesRaw Markdown content.

Response

Returns a downloadable JSON file as a binary response. The output schema is a binary string representing the parsed document structure.

ParameterTypeMandatoryDescription
binaryStringYesDownloadable JSON file containing the parsed document structure.

Query parameters

Name
Type
Description
outputOPTIONAL
string
DEFAULT sample-output

Body

Name
Type
Description
bodyREQUIRED
string
Raw Markdown content.
▣ ENDPOINT 07 / 09
POST
Raw Markdown → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-raw-json-raw
QUICKSTARTGUIDE

Quickstart

Send raw Markdown in the request body to convert it into JSON.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-raw-json-raw" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: text/plain" \
  --data-binary #x27;# Title\n\n- item 1\n- item 2'

What you'll get back

Returns a JSON array. The schema does not declare the item shape, so the array items are unspecified.

TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Raw Markdown content.

About this endpoint

What it does

Converts raw Markdown text into JSON. The request body is a Markdown string, and the response is a JSON array; the exact item shape is not defined in the schema.

Request Body

ParameterTypeMandatoryDescription
bodyStringYesRaw Markdown content.

Response

Returns a JSON array. The schema does not define the structure of the array items, so only the top-level array type is known.

ParameterTypeMandatoryDescription
itemsAnyNoArray items; item schema is not defined.

Body

Name
Type
Description
bodyREQUIRED
string
Raw Markdown content.
▣ ENDPOINT 08 / 09
POST
URL → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-url-json-raw
QUICKSTARTGUIDE

Quickstart

Convert a Markdown file from a URL into raw JSON by sending the file URL in the request body.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-url-json-raw" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://assets.apyhub.com/samples/sample.md"}'

What you'll get back

Returns a JSON array. The items are not further specified in the schema, so the array contents depend on the Markdown being converted.

TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
URL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain.

About this endpoint

What it does

Converts a Markdown file accessible at a URL into a JSON response. The request sends the source file URL, and the endpoint returns the parsed result as a JSON array.

Request Body

ParameterTypeMandatoryDescription
urlStringYesURL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain. Format: URI.

Response

Returns a JSON array. The output schema does not define the array item shape, so the element structure is not yet captured in the schema. Success is represented by a 200 response.

ParameterTypeMandatoryDescription
itemsObjectYesArray items are not defined in the schema.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 09 / 09
POST
File upload → JSON
http://localhost:8080/apyhub/convert-markdown-to-json/md-file-json-file
QUICKSTARTGUIDE

Quickstart

Upload a Markdown file and get back a downloadable JSON file with the parsed document structure.

curl -X POST "http://localhost:8080/apyhub/convert-markdown-to-json/md-file-json-file" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/document.md"

What you'll get back

Returns a binary JSON file (string with format: binary) containing the parsed document structure.

TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Markdown file to convert. Must have MIME type text/markdown.

About this endpoint

What it does

Converts an uploaded Markdown file into a downloadable JSON file containing the parsed document structure. The request sends the source file, and the response returns a binary file download.

Query Parameter(s)

AttributeTypeMandatoryDescription
outputStringNoOutput file name. Default: sample-output.

Request Body

ParameterTypeMandatoryDescription
fileStringYesMarkdown file to convert. Must have MIME type text/markdown. Format: binary.

Response

Returns a binary JSON file download containing the parsed document structure.

ParameterTypeMandatoryDescription
binary fileStringYesDownloadable JSON file containing the parsed document structure.

Query parameters

Name
Type
Description
outputOPTIONAL
string
DEFAULT sample-output

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.