✊ API Documentation
A RESTful JSON API for accessing spite projects, spite scores, builder data, and platform stats. Built with spite, designed for developers who appreciate simplicity over unnecessary complexity. No API keys required (for now). No tracking. No BS.
Rate Limits
Free tier: 100 requests/minute per IP address
Response headers:
X-RateLimit-Limit- Maximum requests per windowX-RateLimit-Remaining- Requests remainingX-RateLimit-Reset- When the limit resets (ISO 8601)
Exceeded the limit? Slow down or host your own instance. The code is open source.
Projects
List all spite projects with optional filtering and pagination.
Query Parameters
Filter by label (e.g., "vibe-coding", "meta")
Number of results per page
Pagination offset (default: 0)
EXAMPLE REQUEST
curl https://spiteprojects.com/api/v1/projects?label=vibe-coding&limit=10
Response Schema
{
"data": [
{
"name": "Project Name",
"author": "username",
"description": "Description of the spite",
"repo": "https://github.com/...",
"web": "https://...",
"labels": ["label1", "label2"],
"badges": ["badge-id"],
"spite_score": 7.5,
"spite_roast": "Snarky AI roast"
}
],
"meta": {
"total": 42,
"limit": 10,
"offset": 0,
"count": 10
}
}
Get a specific project by name (URL-encoded).
EXAMPLE REQUEST
curl https://spiteprojects.com/api/v1/projects/spiteprojects.com
Response Schema
{
"data": {
"name": "spiteprojects.com",
"author": "asah",
"description": "...",
...
}
}
Get the Spite Score and roast for a project.
EXAMPLE REQUEST
curl https://spiteprojects.com/api/v1/projects/spiteprojects.com/spite-score
Response Schema
{
"data": {
"name": "spiteprojects.com",
"spite_score": 7.5,
"spite_roast": "AI-generated roast",
"badges": ["vibe-coded", "meta"]
}
}
Get satirical enterprise pricing tiers for a project. Because every spite project deserves a laughably overpriced enterprise plan.
EXAMPLE REQUEST
curl https://spiteprojects.com/api/v1/projects/spiteprojects.com/pricing
Response Schema
{
"data": {
"projectName": "spiteprojects.com",
"tiers": [
{
"name": "Startup",
"price": "$0/year",
"description": "Just use the free version",
"features": [...]
},
...
],
"disclaimer": "Your spite project: $0 - Available right now - Zero meetings required"
}
}
Builders
List all spite builders with optional pagination.
Query Parameters
Number of results per page
Pagination offset (default: 0)
EXAMPLE REQUEST
curl https://spiteprojects.com/api/v1/builders
Response Schema
{
"data": [
{
"name": "Builder Name",
"github": "username",
"bio": "Short bio",
"projects": ["Project 1", "Project 2"],
...
}
],
"meta": {
"total": 15,
"limit": 15,
"offset": 0,
"count": 15
}
}
Platform Stats
Get platform-wide statistics including total projects, builders, spite scores, and popular badges/labels.
EXAMPLE REQUEST
curl https://spiteprojects.com/api/v1/stats
Response Schema
{
"data": {
"projects": {
"total": 42,
"with_spite_scores": 38
},
"builders": {
"total": 15
},
"spite_scores": {
"total": 285.5,
"average": 7.5,
"highest": 9.2
},
"badges": {
"vibe-coded": 12,
"speed-run": 8,
...
},
"labels": {
"vibe-coding": 15,
"anti-saas": 10,
...
}
}
}
Get a random spite project for inspiration. Perfect for when you need a dose of spite energy.
EXAMPLE REQUEST
curl https://spiteprojects.com/api/v1/random
Response Schema
{
"data": {
"name": "Random Spite Project",
"author": "username",
...
}
}
🤖 MCP Integration (Model Context Protocol)
Use Spite Projects directly in Claude Desktop or other MCP-compatible AI assistants. Get spite project recommendations, search projects, and access spite scores from your AI.
Installation
Add to your Claude Desktop config at ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"spiteprojects": {
"command": "node",
"args": ["/path/to/spiteprojects-dot-com/mcp/spiteprojects-mcp.js"]
}
}
}
Available MCP Tools
Returns all spite projects with optional label filtering.
Get a project's spite score and roast by name.
Get a random spite project for inspiration.
Search projects by name or description.
See the MCP directory for full setup instructions and source code.
Error Handling
All endpoints return appropriate HTTP status codes and JSON error responses.
Common Error Responses
// 404 Not Found
{
"error": "Project not found",
"message": "No spite project found with name: XYZ"
}
// 429 Rate Limit Exceeded
{
"error": "Rate limit exceeded",
"message": "Too many requests. Slow down there, champ. Free tier is 100 req/min.",
"limit": 100,
"remaining": 0,
"reset": "2026-02-20T12:34:56.789Z"
}
Notes
- All responses are JSON with
Content-Type: application/json - CORS enabled for all
/api/v1/*endpoints - Rate limits are per IP address, enforced on a rolling 1-minute window
- Project names in URLs must be URL-encoded (use
encodeURIComponent) - No authentication required (yet) - this is open data built with spite
- Want higher rate limits? Run your own instance. It's open source. ✊