Loading...
paste.io/abc123)public, unlisted, privateRequest
{
"content": "print('Hello')",
"expires_in": 3600,
"syntax": "python",
"visibility": "unlisted"
}
Response
{
"paste_id": "abc123",
"url": "https://paste.io/abc123",
"expires_at": "2025-11-30T10:00:00Z"
}
Response:
{
"content": "print('Hello')",
"syntax": "python",
"created_at": "2025-11-30T09:00:00Z",
"expires_at": "2025-11-30T10:00:00Z"
}
[Client]
↓
[API Gateway / Load Balancer]
↓
[Paste Service (Create / Retrieve)]
↓ ↘
[Redis Cache] [Database]
↑ ↓
[TTL Cleaner Job / Expiry Processor]
Table: pastes
- paste_id (PK, string)
- content (text)
- created_at (timestamp)
- expires_at (timestamp)
- syntax (string)
- visibility (enum: public, unlisted, private)
- owner_id (nullable, for logged-in users)
Indexes:
| DecisionAlternatives Considered | |
| Use Base62 short ID | vs sequential ID (less secure, guessable) |
| Redis TTL caching | vs edge CDN (CDN better for static public pastes) |
| PostgreSQL for DB | vs DynamoDB (less query flexibility) |
| Soft deletes | vs hard deletes for expiry cleanup |