API Reference
The Adonis EOS API provides RESTful endpoints for managing content, media, and settings.
Authentication
Most API endpoints require authentication via session cookies. Admin-level access requires the admin role.
Posts API
List Posts
GET /api/posts?type=page&status=published&locale=en
Query Parameters:
type- Post type (page, blog, profile, company, testimonial)status- Filter by status (published, draft, archived)locale- Language code (en, es, fr, etc.)taxonomy- Filter by taxonomy slugsearch- Search in title and content
Response:
{
"data": [
{
"id": "uuid",
"title": "Page Title",
"slug": "page-slug",
"type": "page",
"status": "published",
"locale": "en",
"modules": [...]
}
],
"meta": {
"total": 10,
"per_page": 20,
"current_page": 1
}
}
Get Single Post
GET /api/posts/:id
Returns full post data including modules, metadata, and relationships.
Create Post
POST /api/posts
Content-Type: application/json
{
"title": "New Page",
"slug": "new-page",
"type": "page",
"status": "draft",
"locale": "en",
"modules": []
}
Update Post
PUT /api/posts/:id
Content-Type: application/json
{
"title": "Updated Title",
"status": "published"
}
Delete Post
DELETE /api/posts/:id
Soft deletes the post (can be restored).
Media API
Upload Media
POST /api/media/upload
Content-Type: multipart/form-data
file: <binary>
alt_text: "Description"
categories: ["hero", "featured"]
Response:
{
"id": "uuid",
"filename": "image.jpg",
"url": "/uploads/image.jpg",
"size": 102400,
"mime": "image/jpeg",
"variants": {
"large": "/uploads/image.large.jpg",
"medium": "/uploads/image.medium.jpg",
"small": "/uploads/image.small.jpg"
}
}
Generate Variants
POST /api/media/:id/variants
Content-Type: application/json
{
"theme": "dark"
}
Generates image variants (light or dark theme).
Get Media
GET /api/media?category=hero&search=logo
Lists media assets with optional filtering.
Modules API
Get Post Modules
GET /api/posts/:postId/modules
Returns all modules for a post with their current props.
Add Module
POST /api/posts/:postId/modules
Content-Type: application/json
{
"type": "hero",
"props": {
"title": "Welcome",
"subtitle": "To our site"
}
}
Update Module
PUT /api/post-modules/:moduleId
Content-Type: application/json
{
"props": {
"title": "Updated Title"
}
}
Reorder Modules
POST /api/posts/:postId/modules/reorder
Content-Type: application/json
{
"order": ["module-uuid-1", "module-uuid-2", "module-uuid-3"]
}
Forms API
Submit Form
POST /api/forms/:slug/submit
Content-Type: application/json
{
"email": "[email protected]",
"message": "Hello!"
}
Get Form Definition
GET /api/forms-definitions/:slug
Returns form schema and configuration.
Menus API
Get Menu
GET /api/menus/by-slug/:slug?locale=en
Returns menu structure with items.
Response:
{
"id": "uuid",
"name": "Primary",
"slug": "primary",
"items": [
{
"id": "uuid",
"label": "Home",
"type": "custom",
"url": "/",
"children": []
}
]
}
Analytics API
Track Event (Public)
POST /api/public/analytics/track
Content-Type: application/json
{
"postId": "uuid",
"eventType": "click",
"x": 150.5,
"y": 420.2,
"viewportWidth": 1200,
"metadata": { "button": "cta-main" }
}
Get Summary (Admin)
GET /api/analytics/summary
Get Heatmap (Admin)
GET /api/analytics/heatmap?postId=uuid&eventType=click
Feedback API
List Feedback
GET /api/feedbacks?postId=uuid
Submit Feedback
POST /api/feedbacks
Content-Type: application/json
{
"postId": "uuid",
"category": "bug",
"content": "Image is not loading on mobile",
"x": 0.5,
"y": 0.8,
"elementSelector": "main > section > img"
}
Variations API
Create Variation
POST /api/posts/:id/variations
Promote Variation
POST /api/posts/:id/promote-variation
Global Modules API
List Global Modules
GET /api/modules/global
Get Static Module
GET /api/modules/static?q=site-footer
Database Admin API
Find and Replace
POST /api/database/find-replace
Content-Type: application/json
{
"find": "old-brand.com",
"replace": "new-brand.com",
"tables": ["post_modules", "posts"]
}
Webhooks
Adonis EOS can trigger webhooks on various events:
post.createdpost.updatedpost.publishedpost.deletedform.submitted
Configure webhooks in /admin/settings.
Rate Limiting
API endpoints are rate-limited to prevent abuse:
Authenticated: 1000 requests/hour
Anonymous: 100 requests/hour
Form submissions: 10 requests/hour per IP
Error Responses
{
"error": "Validation failed",
"details": {
"title": ["Title is required"]
}
}
Common HTTP status codes:
200- Success201- Created400- Bad Request401- Unauthorized403- Forbidden404- Not Found422- Validation Error429- Too Many Requests500- Server Error