API Requests

DrakoPaste lets you create and retrieve pastes via a simple REST API.

Base URL

https://your-domain.com/api/v1

Rate Limits

  • POST /pastes → 20 req/min per IP

  • GET /pastes → 10 req/min per IP

Headers in every response:

  • X-RateLimit-Limit

  • X-RateLimit-Remaining

  • X-RateLimit-Reset


Authentication

No authentication required. All endpoints are public (with rate limits).


Endpoints

1. Create Paste

POST /pastes

Field
Type
Required
Notes

content

string

Paste text (1MB)

title

string

Max 100 chars

language

string

Syntax highlighting

visibility

string

public, unlisted, private

burnAfterRead

boolean

Delete after first view

expiration

string

never, 1hour, 1day, 1week, 1month

password

string

Protect paste

maxViews

number

1–1000 views

Example:

curl -X POST https://your-domain.com/api/v1/pastes \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Hello World",
    "content": "console.log(\"Hello, World!\");",
    "language": "javascript",
    "visibility": "public",
    "expiration": "1week"
  }'

2. Retrieve Paste

GET /pastes?id={pasteId}

Param
Type
Required
Description

id

string

Paste ID

Example:

curl "https://your-domain.com/api/v1/pastes?id=abc123def"

Error Codes

Code
Meaning

INVALID_JSON

Bad JSON body

EMPTY_BODY

Request body missing

VALIDATION_ERROR

Missing/invalid fields

CONTENT_TOO_LARGE

Exceeds 1MB

TITLE_TOO_LONG

Title >100 chars

INVALID_EXPIRATION

Wrong expiration value

RATE_LIMIT_EXCEEDED

Too many requests

MISSING_ID

Paste ID required

PASTE_NOT_FOUND

Paste does not exist

PASTE_EXPIRED

Paste expired

PASTE_BURNED

Burn-after-read triggered

MAX_VIEWS_REACHED

View limit hit

DATABASE_ERROR

DB issue


Examples

Simple text

curl -X POST https://your-domain.com/api/v1/pastes \
  -H "Content-Type: application/json" \
  -d '{"content": "My notes"}'

Code snippet

-d '{
  "title": "React Component",
  "content": "function App(){return <div>Hello</div>}",
  "language": "javascript"
}'

Private + password

-d '{
  "content": "api_key=secret123",
  "visibility": "private",
  "password": "mypassword"
}'

Burn after read

-d '{
  "content": "One-time secret",
  "burnAfterRead": true
}'

Limited views

-d '{
  "content": "5-view paste",
  "maxViews": 5
}'

Supported Languages

DrakoPaste supports 90+ languages and formats.

  • Web: javascript, typescript, jsx, tsx, html, css, scss

  • General: python, java, csharp, cpp, c, go, rust, php, ruby, swift

  • Functional: haskell, clojure, elixir, erlang, fsharp, ocaml

  • Shell & Scripts: bash, zsh, powershell, batch

  • Data/Config: json, yaml, toml, ini, xml, csv

  • Database: sql, plsql, mongodb

  • Docs: markdown, latex, asciidoc

  • DevOps: docker, terraform, kubernetes, nginx, apache

  • Other: regex, diff, git, protobuf, graphql, solidity, wasm, assembly

  • Scientific/Legacy: r, matlab, julia, fortran, cobol, pascal

👉 For plain text, use text or leave language empty.


Client Examples

Node.js

const res = await fetch("https://your-domain.com/api/v1/pastes", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ content: "console.log('Hello')" })
});
console.log(await res.json());

Python

import requests
res = requests.post("https://your-domain.com/api/v1/pastes", json={
  "content": "print('Hello')"
})
print(res.json())

Last updated