Repikue

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_here

Keys 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

limitintegerMax results to return. Default 50, max 100.
sincestringOnly 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*numberExpense amount. Must be positive, max 1,000,000.
descriptionstringOptional note for the expense. Max 500 characters.
datestringDate in YYYY-MM-DD format. Defaults to today.
tagsstring[]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() // 201

Response 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

StatusMeaning
401Missing or invalid API key
400Invalid request body or parameters
404No active budget period found
500Internal server error

Error format

json
{ "error": "No active budget period found" }