Markdrop

Developer API

Markdrop API
Turn any Markdown into a shareable link in one curl call

POST /api/drop is a public, no-auth endpoint. Send Markdown as JSON or a file upload, get back a URL. Works from curl, Python, Node.js, shell pipes, or any HTTP client.

Quick startIntegration examples
POST/api/dropJSONapplication/jsonMULTIPARTmultipart/form-dataRETURNSurl · slug · expires_at

Quick start

One curl call. One live URL.

Send a JSON body with a markdown key. The API returns a url you can open immediately.

RequestPOST /api/drop
curl -X POST https://markdrop.nanocorp.app/api/drop \
  -H "Content-Type: application/json" \
  -d '{"markdown": "# Hello\n\nThis is **Markdrop**."}'

Response (HTTP 201):

Response201 Created
{
  "url": "https://markdrop.nanocorp.app/v/abc123",
  "slug": "abc123",
  "expires_at": "2026-06-01T00:00:00.000Z"
}

Optional: add title to the JSON body to set the page heading. If your markdown already starts with an # H1, the title is ignored.

Install CLI

Use Markdrop from npm or npx.

Prefer a one-command workflow? Install the official CLI globally or run it via npx. It uploads a file or stdin to POST /api/drop, prints the shareable URL to stdout, and writes the expiry and upgrade note to stderr so your pipes stay clean.

Install globallynpm
npm install -g markdrop
Zero installnpx
npx markdrop README.md
Pipe from stdinstdin
cat output.md | npx markdrop
Pipe from AI agentsagent output
claude -p "write a summary" | npx markdrop
Stdoutpipe-safe output
https://markdrop.nanocorp.app/v/abc123
Stderrhuman-readable status
✓ Markdrop created: https://markdrop.nanocorp.app/v/abc123
  Expires in 7 days - upgrade to permanent: https://markdrop.nanocorp.app/api/checkout-link?slug=abc123&source=cli

Use in CI/CD

Auto-publish docs from GitHub Actions or any pipeline.

Add Markdrop to your CI pipeline. Auto-publish changelogs, test reports, and AI-generated summaries as shareable links.

GitHub Actions

Publish docs to Markdrop.github/workflows/*.yml
- name: Publish docs to Markdrop
  run: |
    URL=$(cat docs/report.md | npx markdrop)
    echo "Published: $URL"

curl and shell

Publish from any CIcurl | jq
# Publish from any CI (no npm needed)
URL=$(curl -s -X POST https://markdrop.nanocorp.app/api/drop \
  -H "Content-Type: application/json" \
  -d "{\"content\": \"$(cat README.md | sed 's/\"/\\\"/g')\"}" \
  | jq -r '.url')
echo "Docs live at: $URL"

File upload

Upload a .md file directly.

Use multipart/form-data to send a file. Works with any .md, .markdown, or .txt file. The API handles the rest.

Multipart uploadmultipart/form-data
curl -X POST https://markdrop.nanocorp.app/api/drop \
  -F "file=@README.md"

Field

file

Type

binary

Optional

title (string)

Accepted

.md · .markdown · .txt

AI agent integrations

Pipe agent output straight to a link.

Markdrop works anywhere you can make an HTTP request or shell out to the CLI. Below are three common patterns for wiring it into AI coding agent workflows.

Shell — pipe Claude Code output

Bash pipeclaude code | markdrop
claude -p "write a summary" | npx markdrop

Any tool that writes Markdown to stdout can be piped this way.

Python — requests

Pythonrequests
import requests

response = requests.post(
    "https://markdrop.nanocorp.app/api/drop",
    json={"markdown": "# My Report\n\nGenerated by the pipeline."},
)
data = response.json()
print(data["url"])  # => https://markdrop.nanocorp.app/v/abc123

Node.js — fetch

Node.jsfetch
const res = await fetch("https://markdrop.nanocorp.app/api/drop", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    markdown: "# Hello\n\nFrom Node.js.",
  }),
});
const { url } = await res.json();
console.log(url); // => https://markdrop.nanocorp.app/v/abc123

Rate limits & expiry

Free tier limits.

Requests

10 / IP / hour

Free tier

Link lifetime

7 days

Free drops expire automatically

Permanent links

Pro plan

Never expire

When you exceed the rate limit, the API returns 429 with a retry_after_seconds field:

429 responseRate limit exceeded
{
  "error": "Rate limit exceeded. Try again later.",
  "retry_after_seconds": 3542
}

Markdrop Pro

Permanent links, no expiry, higher limits.

Free drops expire after 7 days. Upgrade to Pro for links that never expire — perfect for documentation, agent output archives, and public technical writing.

Upgrade to Pro →

Reference

Endpoint summary.

Param / fieldTypeDescription
markdownstring (JSON body)Required if not using file upload. Raw Markdown content.
titlestring (optional)Prepends # <title> if the markdown has no top-level heading.
filefile (multipart)Required if not using JSON body. .md / .markdown / .txt file.
→ urlstring (response)Full URL to the rendered drop. Share this.
→ slugstring (response)8-character nanoid slug. Used in the URL.
→ expires_atISO-8601 | null (response)When the link expires. null = permanent (Pro only).