~ Build your endpoint in minutes.
Every endpoint, typed and documented on one page — boring docs, banished.
The big idea
Every endpoint, template and workflow ships with types, live examples and a playground you can run right here. Authentication is handled via httpOnly cookies — your frontend never touches a raw token.
60 seconds
Create an account, log in to get your session cookie, and ship your first project. No servers to babysit — the playground handles the boring parts.
Register an account
Create your account to start building.
Login to get your session cookie
The httpOnly cookie is set automatically on login.
Create your first project
POST multipart/form-data to /project and you're live.
Point your client
All endpoints are relative to this base URL. Authentication is handled via httpOnly cookies — no manual token juggling required.
https://projectapi.firozkhan.site/api
Swap the host for your deployed backend when you're ready to go live.
Core resource
Manage your projects. All project endpoints (except public) require authentication. Image uploads use multipart/form-data via express-fileupload.
/project/publicGet public projects (no auth required)
| Field | Type | Required |
|---|---|---|
| title | string | Required |
| description | string | Required |
| tech | string (comma-separated) | Required |
| liveDemo | string (URL) | Optional |
| github | string (URL) | Optional |
| category | string | Required |
| featured | string ("true" | "false") | Optional |
| image | File (multipart) | Optional |
| customFields | string (object) | Optional |
{"success": true,"data": {"id": 1,"ProjectID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890","title": "My Awesome Project","description": "A full-stack web app","image": "https://ik.imagekit.io/...","tech": ["React", "Node.js", "PostgreSQL"],"liveDemo": "https://myapp.vercel.app","github": "https://github.com/user/repo","customFields": {"field1": "value1","field2": "value2"},"category": "Web App","featured": true,"userId": "1","createdAt": "2026-07-19T00:00:00.000Z","updatedAt": "2026-07-19T00:00:00.000Z"}}
Wire it up
The frontend uses React Query, Axios, and Redux for state management. All API calls are centralized with proper error handling and loading states.
"use client";import { useEffect, useState } from "react";import axios from "axios";export default function Example() {const [data, setData] = useState<any>(null);useEffect(() => {const fetchData = async () => {try {const res = await axios.get("/projects/public", {headers: {accesskey: "YOUR_ACCESS_KEY",},});setData(res.data);} catch (error) {console.error(error);}};fetchData();}, []);return (<pre>{JSON.stringify(data, null, 2)}</pre>);}
Be nice
All API endpoints are rate-limited to 10 requests per 30 seconds per IP. Exceeding this limit returns a 429 Too Many Requests response.
{"success": false,"message": "Too many requests, please try again later"}
When things break
All errors follow a consistent format. The API returns appropriate HTTP status codes with a JSON body.
{"success": false,"message": "Human-readable error description"}
Bad Request
Missing or invalid fields
Unauthorized
Invalid or missing auth token
Not Found
Resource does not exist
Rate Limited
Too many requests
Server Error
Internal server error
Generate client types for TS + JS with one flag.
Snap-back any endpoint version in one click.
See deploy time, usage and uptime in a glance.
Start building with the playground — typed endpoints, live responses, one command to ship.