CMS
Structured content with content types, entries, and assets.
Content Types
Section titled “Content Types”Project-scoped schema definitions.
{ "slug": "blog-post", "name": "Blog Post", "fields": [ { "key": "title", "name": "Title", "field_type": "text", "required": true }, { "key": "body", "name": "Body", "field_type": "richtext", "required": true }, { "key": "published_date", "name": "Published Date", "field_type": "date", "required": false } ]}Field types: text, richtext, number, boolean, date, reference, json, image, file
Content Entries
Section titled “Content Entries”Environment-scoped instances of content types.
{ "slug": "getting-started", "data": { "title": "Getting Started with Soup", "body": "<p>Welcome...</p>", "published_date": "2025-02-01" }, "status": "published"}Status: draft, published
Assets
Section titled “Assets”Metadata for files stored in S3-compatible bucket (Tigris):
{ "id": "uuid", "filename": "hero.jpg", "content_type": "image/jpeg", "size": 245678, "url": "https://assets.getsoup.dev/...", "width": 1920, "height": 1080}Upload assets via dashboard, reference in entries.
Delivery API
Section titled “Delivery API”Read-only API for fetching published content:
GET /deliver/{project}/{env}/typesGET /deliver/{project}/{env}/{type}?page=1&limit=20&status=publishedGET /deliver/{project}/{env}/{type}/{entry}No authentication required. Use in frontend apps.
Rich Text Editor
Section titled “Rich Text Editor”TipTap-based editor in dashboard. Stores HTML in richtext fields.
Content Types (project-scoped):
GET /api/v1/projects/{slug}/content-typesPOST /api/v1/projects/{slug}/content-typesGET /api/v1/projects/{slug}/content-types/{typeSlug}PATCH /api/v1/projects/{slug}/content-types/{typeSlug}DELETE /api/v1/projects/{slug}/content-types/{typeSlug}Content Entries (environment-scoped):
GET /api/v1/projects/{slug}/environments/{env}/content/{type}POST /api/v1/projects/{slug}/environments/{env}/content/{type}GET /api/v1/projects/{slug}/environments/{env}/content/{type}/{entry}PATCH /api/v1/projects/{slug}/environments/{env}/content/{type}/{entry}DELETE /api/v1/projects/{slug}/environments/{env}/content/{type}/{entry}PUT /api/v1/projects/{slug}/environments/{env}/content/{type}/{entry}/publishLimits
Section titled “Limits”- Personal (Free): 100 entries per environment
- Starter ($5/user): Unlimited entries