API Reference
API Reference.
Integrate Grova into your stack with the REST API.
Authentication
The Grova API supports two authentication methods:
- JWT Bearer Token - Pass your session token in the Authorization header:
Authorization: Bearer <token> - API Key - Use a per-project API key via the
x-grova-keyheader. Keys are prefixed withgv_and can be generated in your project settings.
API keys are scoped to a single project and can only access resources within that project. JWT tokens have access to all projects the authenticated user belongs to.
Endpoints
| Method | Path | Description |
|---|---|---|
POST | /feedback | Submit new feedback. Triggers AI triage automatically. |
GET | /feedback | List a paginated feedback page for one authorized project. Requires the project_id query parameter for JWT or administrative keys. |
POST | /feedback/:id/approve | Approve a feedback item and mark it as reviewed. |
POST | /actions/send | Send a smart action email for a feedback item. |
POST | /actions/send-suggested | Send the AI-suggested action without modification. |
Example: Submit Feedback
Send a POST request to create a new feedback item. The AI triage pipeline runs automatically after submission.
Request
POST /feedback HTTP/1.1
Host: grova-api-production.up.railway.app
Content-Type: application/json
x-grova-key: gv_your_project_key
{
"message": "The checkout page crashes on Safari when I click pay.",
"type": "bug",
"source": "your-app",
"email": "[email protected]",
"metadata": {
"browser": "Safari 17.2",
"os": "macOS 14.3",
"url": "/checkout"
}
}Response
{
"success": true,
"id": "fb_abc123",
"triage_status": "queued"
}Example: List Feedback
List requests require an authorized project scope. Pages default to 50 items and the limit is capped at 100.
GET /feedback?project_id=project_123&page=1&limit=50
{
"items": [],
"pagination": {
"page": 1,
"limit": 50,
"total": 0,
"total_pages": 0,
"has_more": false
}
}Rate Limiting
Public feedback and transcription endpoints are rate limited to 10 requests per minute per source IP. Standard rate limit headers are returned with those endpoints: X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.