REST API Reference
All endpoints are under https://repikue.com/api/v1.
Authentication
All requests require a Bearer token in the Authorization header. Generate a key in Settings → API Keys.
bash
Authorization: Bearer rpk_your_key_hereKeys begin with rpk_ and are tied to your account. Revoke them any time in Settings.
Budget
Get the current budget status for your active period.
GET/api/v1/budget
Example
bash
curl https://repikue.com/api/v1/budget \
-H "Authorization: Bearer rpk_your_key_here"javascript
const res = await fetch('https://repikue.com/api/v1/budget', {
headers: { Authorization: 'Bearer rpk_your_key_here' },
})
const { period, budget } = await res.json()Response
json
{
"period": {
"id": "uuid",
"startDate": "2026-04-01",
"endDate": "2026-04-30",
"income": 3000,
"fixedExpenses": 1200,
"savingsGoal": 300,
"periodType": "monthly"
},
"budget": {
"totalBudget": 1500,
"dailyBudget": 42.50,
"spentToday": 18.00,
"totalSpent": 312.00,
"moneyLeft": 1188.00,
"daysLeft": 21,
"status": "on-track"
}
}status is one of: on-track, warning, over.
Expenses
List or create expenses in the active period.
GET/api/v1/expenses
Query parameters
| limit | integer | Max results to return. Default 50, max 100. |
| since | string | Only return expenses on or after this date. Format: YYYY-MM-DD. |
Example
bash
# Get expenses since April 1st
curl "https://repikue.com/api/v1/expenses?since=2026-04-01&limit=20" \
-H "Authorization: Bearer rpk_your_key_here"Response
json
{
"expenses": [
{
"id": "uuid",
"amount": 4.50,
"note": "Coffee",
"tags": ["food"],
"date": "2026-04-02",
"createdAt": "2026-04-02T09:15:00Z"
}
],
"total": 1
}POST/api/v1/expenses
Body parameters
| amount* | number | Expense amount. Must be positive, max 1,000,000. |
| description | string | Optional note for the expense. Max 500 characters. |
| date | string | Date in YYYY-MM-DD format. Defaults to today. |
| tags | string[] | Up to 10 category tags, each max 50 characters. |
Example
bash
curl -X POST https://repikue.com/api/v1/expenses \
-H "Authorization: Bearer rpk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"amount": 12.50, "description": "Lunch", "tags": ["food"]}'javascript
const res = await fetch('https://repikue.com/api/v1/expenses', {
method: 'POST',
headers: {
Authorization: 'Bearer rpk_your_key_here',
'Content-Type': 'application/json',
},
body: JSON.stringify({ amount: 12.50, description: 'Lunch', tags: ['food'] }),
})
const { expense } = await res.json() // 201Response 201
json
{
"expense": {
"id": "uuid",
"amount": 12.50,
"description": "Lunch",
"tags": ["food"],
"date": "2026-04-02",
"createdAt": "2026-04-02T12:30:00Z"
}
}Forecast
Projects spending to the end of the period based on current pace.
GET/api/v1/forecast
Example
bash
curl https://repikue.com/api/v1/forecast \
-H "Authorization: Bearer rpk_your_key_here"Response
json
{
"forecast": {
"projectedEndSpend": 890.00,
"projectedSavings": 610.00,
"onTrack": true,
"gap": 310.00,
"daysElapsed": 9,
"daysTotal": 30,
"daysLeft": 21
}
}gap is the difference between projected savings and your goal. Positive means you're ahead; negative means shortfall.
Errors
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 400 | Invalid request body or parameters |
| 404 | No active budget period found |
| 500 | Internal server error |
Error format
json
{ "error": "No active budget period found" }