https://paste.flex.pm/api/v1
- POST /pastes → 20 req/min per IP
- GET /pastes → 10 req/min per IP
Headers in every response:
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-Reset
No authentication required. All endpoints are public (with rate limits).
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://paste.flex.pm/api/v1/pastes \
-H "Content-Type: application/json" \
-d '{
"title": "Hello World",
"content": "console.log(\"Hello, World!\");",
"language": "javascript",
"visibility": "public",
"expiration": "1week"
}'GET /pastes?id={pasteId}
| Param | Type | Required | Description |
|---|---|---|---|
id |
string | ✅ | Paste ID |
Example:
curl "https://paste.flex.pm/api/v1/pastes?id=abc123def"| 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 |
curl -X POST https://paste.flex.pm/api/v1/pastes \
-H "Content-Type: application/json" \
-d '{"content": "My notes"}'-d '{
"title": "React Component",
"content": "function App(){return <div>Hello</div>}",
"language": "javascript"
}'-d '{
"content": "api_key=secret123",
"visibility": "private",
"password": "mypassword"
}'-d '{
"content": "One-time secret",
"burnAfterRead": true
}'-d '{
"content": "5-view paste",
"maxViews": 5
}'FlexPaste 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.
const res = await fetch("https://paste.flex.pm/api/v1/pastes", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ content: "console.log('Hello')" })
});
console.log(await res.json());import requests
res = requests.post("https://paste.flex.pm/api/v1/pastes", json={
"content": "print('Hello')"
})
print(res.json())