API Endpoints
Base URL: https://gosprintvibe.com/api/v1
All responses are JSON. All requests require a Bearer token in the Authorization header.
User Info
GET /api/v1/me
Returns the authenticated user's profile and subscription details.
curl -H "Authorization: Bearer sv_xxx" \
https://gosprintvibe.com/api/v1/me
Response:
json
{
"id": 1,
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"subscription_tier": "pro",
"subscription_status": "active",
"ai_generations_remaining": 250,
"chat_messages_remaining": 900,
"projects_count": 5,
"created_at": "2026-03-15T10:30:00Z"
}
Projects
GET /api/v1/projects
List all accessible projects.
| Parameter | Type | Description |
|---|---|---|
page |
integer | Page number (default: 1) |
per_page |
integer | Records per page (default: 25, max: 100) |
curl -H "Authorization: Bearer sv_xxx" \
"https://gosprintvibe.com/api/v1/projects?page=1&per_page=25"
Response:
json
{
"data": [
{
"id": 1,
"name": "My Project",
"description": "Project description",
"tech_stack": "Rails, PostgreSQL",
"team_size": 3,
"status": "active",
"sprints_count": 5,
"backlog_stories_count": 12,
"created_at": "2026-03-15T10:30:00Z",
"updated_at": "2026-03-20T14:45:00Z"
}
],
"meta": {
"page": 1,
"per_page": 25,
"total": 5,
"total_pages": 1
}
}
GET /api/v1/projects/:id
Get project details with nested sprints.
curl -H "Authorization: Bearer sv_xxx" \
https://gosprintvibe.com/api/v1/projects/1
The response includes a sprints array with all sprints for the project.
Sprints
GET /api/v1/projects/:project_id/sprints
List sprints for a project. Supports page and per_page parameters.
curl -H "Authorization: Bearer sv_xxx" \
"https://gosprintvibe.com/api/v1/projects/1/sprints"
GET /api/v1/sprints/:id
Get sprint with full epics and stories.
curl -H "Authorization: Bearer sv_xxx" \
https://gosprintvibe.com/api/v1/sprints/10
Response includes:
- Sprint details (name, goal, dates, status)
- epics array with id, name, description, color, position
- stories array with full story objects including tasks
Stories
GET /api/v1/sprints/:sprint_id/stories
List stories in a sprint with optional filters.
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter: todo, in_progress, review, done |
epic_id |
integer | Filter by epic |
user_id |
integer | Filter by assignee |
page |
integer | Page number |
per_page |
integer | Records per page |
curl -H "Authorization: Bearer sv_xxx" \
"https://gosprintvibe.com/api/v1/sprints/10/stories?status=in_progress"
GET /api/v1/stories/:id
Get full story details including tasks, project context, sprint context, and attachments.
curl -H "Authorization: Bearer sv_xxx" \
https://gosprintvibe.com/api/v1/stories/100
Response includes:
- Story fields (title, description, acceptance criteria, status, points, priority)
- epic object (id, name, color)
- assignee object (id, name, email)
- tasks array (id, title, completed, position)
- project object (id, name, tech_stack, context)
- sprint object (id, name, goal)
- attachments array (file_name, content_type, url)
POST /api/v1/sprints/:sprint_id/stories
Create a new story. Requires write scope.
curl -X POST -H "Authorization: Bearer sv_xxx" \
-H "Content-Type: application/json" \
-d '{"story": {"title": "Implement login", "priority": "high", "story_points": 5}}' \
https://gosprintvibe.com/api/v1/sprints/10/stories
| Field | Type | Required | Description |
|---|---|---|---|
title |
string | Yes | Story title |
description |
string | No | Detailed description |
acceptance_criteria |
string | No | Acceptance criteria |
epic_id |
integer | No | Epic to assign to |
priority |
string | No | low, medium, high, critical |
story_points |
integer | No | Effort estimate |
user_id |
integer | No | Assignee user ID |
PATCH /api/v1/stories/:id
Update a story. Requires write scope. All fields are optional.
curl -X PATCH -H "Authorization: Bearer sv_xxx" \
-H "Content-Type: application/json" \
-d '{"story": {"status": "in_progress"}}' \
https://gosprintvibe.com/api/v1/stories/100
Accepts the same fields as POST, plus status (todo, in_progress, review, done).
PATCH /api/v1/sprints/:id
Update a sprint's status or goal. Requires write scope.
curl -X PATCH -H "Authorization: Bearer sv_xxx" \
-H "Content-Type: application/json" \
-d '{"sprint": {"status": "active"}}' \
https://gosprintvibe.com/api/v1/sprints/10
| Field | Type | Description |
|---|---|---|
status |
string | planning, active, completed |
goal |
string | Updated sprint goal |
Comments
GET /api/v1/stories/:story_id/comments
List comments on a story, ordered by most recent first. Supports pagination.
curl -H "Authorization: Bearer sv_xxx" \
"https://gosprintvibe.com/api/v1/stories/100/comments"
Response:
json
{
"data": [
{
"id": 500,
"content": "Merged PR #123",
"activity_type": "comment",
"user": { "id": 1, "name": "Jane Doe" },
"created_at": "2026-03-20T16:20:00Z"
}
],
"meta": { "page": 1, "per_page": 25, "total": 3, "total_pages": 1 }
}
POST /api/v1/stories/:story_id/comments
Add a comment to a story. Requires write scope.
curl -X POST -H "Authorization: Bearer sv_xxx" \
-H "Content-Type: application/json" \
-d '{"comment": {"content": "Merged PR #123"}}' \
https://gosprintvibe.com/api/v1/stories/100/comments
Response (201):
json
{
"id": 500,
"content": "Merged PR #123",
"activity_type": "comment",
"user": { "id": 1, "name": "Jane Doe", "email": "jane@example.com" },
"created_at": "2026-03-20T16:20:00Z"
}
POST /api/v1/stories/:story_id/pr_summary
Generate an AI-powered PR summary. Requires write scope and Pro/Teams plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
pr_id |
integer | No | The PR ID (defaults to latest open PR) |
curl -X POST -H "Authorization: Bearer sv_xxx" \
-H "Content-Type: application/json" \
-d '{"pr_id": 42}' \
https://gosprintvibe.com/api/v1/stories/100/pr_summary
Response (200):
json
{
"pr_id": 42,
"pr_number": 15,
"summary": "## Changes Summary\nAdded login functionality...",
"generated_at": "2026-04-07T10:00:00Z"
}
GET /api/v1/projects/:project_id/activity
Get development activity for a project's GitHub repository. Requires Pro/Teams plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
days |
integer | No | Number of days to look back (default: 30, max: 90) |
curl -H "Authorization: Bearer sv_xxx" \
"https://gosprintvibe.com/api/v1/projects/1/activity?days=30"
Response (200):
json
{
"period_days": 30,
"stats": {
"total_commits": 42,
"prs_opened": 8,
"prs_merged": 5,
"reviews_submitted": 12
},
"top_contributors": [
{ "login": "octocat", "commits": 15 }
],
"recent_activity": [...]
}