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.
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"
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.
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).