Authentication
Generate a personal access token from your account (Pro plan required) and send it as a bearer token on every request:
Authorization: Bearer YOUR_TOKEN
Accept: application/json
Each token is scoped to one or both abilities: projects:read and projects:write. A request to an endpoint the token wasn't granted returns 403 Forbidden.
Base URL
https://baconservices.com/api/v1
Rate limits
60 requests per minute per token. Exceeding it returns 429 Too Many Requests.
Endpoints
GET /user
Returns the token owner's account.
GET /projects
Lists your personal projects (most recently updated first). Requires projects:read.
POST /projects
Creates a project. Requires projects:write.
curl -X POST https://baconservices.com/api/v1/projects \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"project": {
"width": 1080,
"height": 1080,
"background": "#ffffff",
"layers": [
{ "id": "layer-1", "type": "text", "text": "Hello", "x": 100, "y": 100, "width": 400, "height": 120 }
],
"metadata": { "name": "My design" }
}
}'
GET /projects/{id}
Returns one project's full data (dimensions, background, layers). Requires projects:read.
PUT /projects/{id}
Replaces a project's design — same body shape as create. Requires projects:write.
DELETE /projects/{id}
Deletes a project. Requires projects:write.
Limits
- A project's encoded layers may not exceed 25MB.
- Your combined projects and version history may not exceed 100MB.
What this API doesn't do
There's no endpoint to render a design to a PNG/JPG/PDF — export only happens in the browser's own canvas today, so there's no server-side renderer to call. Use this API to manage project data, then open the result in the editor to export it.