Skip to main content

📊 Analytics API

The Analytics API provides comprehensive financial reporting and insights for your Pika data. This includes spending analysis, income tracking, budget monitoring, and various financial metrics to help you understand your financial patterns and make informed decisions.

📡 Base URL​

All analytics endpoints are prefixed with:

/wp-json/pika/v1/analytics

🚀 Endpoints​

Weekly Expenses​

Get weekly expense breakdown for the current month.

Endpoint: GET /wp-json/pika/v1/analytics/weekly-expenses

Headers:

  • Cookie: Authentication cookie

Response:

{"fri":0,"sat":90,"sun":0,"mon":0,"tue":0,"wed":0,"thu":0}

Example Request:

curl -X GET http://localhost:8000/wp-json/pika/v1/analytics/weekly-expenses \
-H "Cookie: pika_token=token"

Daily Summaries​

Get daily financial summaries for a specific month.

Endpoint: GET /wp-json/pika/v1/analytics/daily-summaries

Headers:

  • Cookie: Authentication cookie
  • Content-Type: application/json

Request Body:

{
"month": 7,
"year": 2025
}

Parameters:

  • month (integer, required): Month number (1-12)
  • year (integer, required): Year (YYYY)

Response:

{
"data": {
"2025-08-01": {
"date": "2025-08-01",
"income": 0,
"expenses": 7780,
"transfers": 0,
"balance": -7780,
"transactionCount": 5,
"incomeTransactionCount": 0,
"expenseTransactionCount": 5,
"transferTransactionCount": 0
},
"2025-08-02": {
"date": "2025-08-02",
"income": 0,
"expenses": 4118.26,
"transfers": 0,
"balance": -4118.26,
"transactionCount": 2,
"incomeTransactionCount": 0,
"expenseTransactionCount": 2,
"transferTransactionCount": 0
},
...
...
...
"2025-08-31": {
"date": "2025-08-31",
"balance": 0,
"income": 0,
"expenses": 0,
"transfers": 0,
"transactionCount": 0,
"incomeTransactionCount": 0,
"expenseTransactionCount": 0,
"transferTransactionCount": 0
}
},
"meta": {
"month": "July",
"year": 2025,
"timezone": "Asia\/Kolkata"
}
}

Example Request:

curl -X GET http://localhost:8000/wp-json/pika/v1/analytics/daily-summaries \
-H "Cookie: pika_token=token" \
-H "Content-Type: application/json" \
-d '{
"month": 7,
"year": 2025
}'

Monthly Summary​

Get comprehensive monthly financial summary.

Endpoint: GET /wp-json/pika/v1/analytics/monthly-summary

Headers:

  • Cookie: Authentication cookie
  • Content-Type: application/json

Request Body:

{
"month": 7,
"year": 2025
}

Response:

{
"year": 2025,
"month": 8,
"monthName": "August",
"income": 2000,
"expenses": 13741.26,
"balance": -11741.26,
"transactionCount": 14,
"savingsRate": -587.06,
"avgDaily": 2290.21,
"incomeTransactionCount": 1,
"expenseTransactionCount": 13
}

Monthly Category Spending​

Get spending breakdown by category for a specific month.

Endpoint: GET /wp-json/pika/v1/analytics/monthly-category-spending

Headers:

  • Cookie: Authentication cookie
  • Content-Type: application/json

Request Body:

{
"month": 7,
"year": 2025
}

Response:

{
"data": [
{
"categoryId": "61",
"categoryName": "Lent Money",
"categoryIcon": "hand-coins",
"categoryColor": "#ffffff",
"categoryBgColor": "#FFA500",
"isParent": false,
"parentId": "45",
"isSystem": false,
"description": "",
"amount": 7000,
"transactionCount": 3,
"averagePerTransaction": 2333.33333333,
"highestTransaction": 6000,
"lowestTransaction": 500
},
...
...
...
{
"categoryId": "34",
"categoryName": "Hair Care",
"categoryIcon": "scissors",
"categoryColor": "#FFFFFF",
"categoryBgColor": "#38A169",
"isParent": false,
"parentId": "33",
"isSystem": true,
"description": "Hair care and styling",
"amount": 180,
"transactionCount": 1,
"averagePerTransaction": 180,
"highestTransaction": 180,
"lowestTransaction": 180
},
],
"meta": {
"month": 8,
"year": 2025,
"totalExpenses": 27482.52
}
}

Monthly Tag Activity​

Get spending breakdown by tags for a specific month.

Endpoint: GET /wp-json/pika/v1/analytics/monthly-tag-activity

Headers:

  • Cookie: Authentication cookie
  • Content-Type: application/json

Request Body:

{
"month": 7,
"year": 2025
}

Response:

{
"data": [
{
"id": "14",
"name": "Loan",
"icon": "hand-coins",
"color": "#ffffff",
"bgColor": "#6A5ACD",
"description": "",
"isSystem": false,
"totalAmount": -5000,
"totalTransactionCount": 4,
"expenseAmount": 7000,
"expenseTransactionCount": 3,
"incomeAmount": 2000,
"incomeTransactionCount": 1,
"transferAmount": 0,
"transferTransactionCount": 0,
"averagePerTransaction": 2250,
"highestTransaction": 6000,
"lowestTransaction": 500
},
{
"id": "6",
"name": "Business",
"icon": "briefcase-business",
"color": "#FFFFFF",
"bgColor": "#2D3748",
"description": "Business transactions",
"isSystem": true,
"totalAmount": -991,
"totalTransactionCount": 1,
"expenseAmount": 991,
"expenseTransactionCount": 1,
"incomeAmount": 0,
"incomeTransactionCount": 0,
"transferAmount": 0,
"transferTransactionCount": 0,
"averagePerTransaction": 991,
"highestTransaction": 991,
"lowestTransaction": 991
},
...
...
...
{
"id": "13",
"name": "Home",
"icon": "house",
"color": "#ffffff",
"bgColor": "#1E3A8A",
"description": "Everything related to my home",
"isSystem": false,
"totalAmount": -494,
"totalTransactionCount": 1,
"expenseAmount": 494,
"expenseTransactionCount": 1,
"incomeAmount": 0,
"incomeTransactionCount": 0,
"transferAmount": 0,
"transferTransactionCount": 0,
"averagePerTransaction": 494,
"highestTransaction": 494,
"lowestTransaction": 494
}
],
"meta": {
"month": "July",
"year": 2025,
"totalExpenses": 8485,
"totalIncome": 2000,
"totalTransfers": 0
}
}

Monthly Person Activity​

Get spending breakdown by people for a specific month.

Endpoint: GET /wp-json/pika/v1/analytics/monthly-person-activity

Headers:

  • Cookie: Authentication cookie
  • Content-Type: application/json

Request Body:

{
"month": 7,
"year": 2025
}

Response:

{
"data": [
{
"id": "7",
"name": "Lucy",
"email": "",
"phone": "",
"description": "Aunty",
"avatarUrl": null,
"balance": 0,
"totalAmount": 1000,
"totalTransactionCount": 3,
"incomeAmount": 2000,
"incomeTransactionCount": 1,
"expenseAmount": 1000,
"expenseTransactionCount": 2,
"averagePerTransaction": 1000,
"highestTransaction": 2000,
"lowestTransaction": 500,
"lastTransactionAt": "2025-08-03 03:38:37"
},
{
"id": "9",
"name": "Sufail",
"email": "",
"phone": "",
"description": "Friend",
"avatarUrl": null,
"balance": -991,
"totalAmount": -991,
"totalTransactionCount": 1,
"incomeAmount": 0,
"incomeTransactionCount": 0,
"expenseAmount": 991,
"expenseTransactionCount": 1,
"averagePerTransaction": 991,
"highestTransaction": 991,
"lowestTransaction": 991,
"lastTransactionAt": "2025-08-03 14:45:21"
},
],
"meta": {
"month": "July",
"year": 2025,
"totalExpenses": 7991,
"totalIncome": 2000,
"totalTransfers": 0
}
}

📈 Analytics Features​

Will update

🚨 Error Responses​

Of course, here are those errors formatted individually.

Invalid Month​

This error is returned when the provided month is not a number between 1 and 12.

{
"code": "invalid_month",
"message": "Invalid month, month must be a number between 1 and 12.",
"data": {
"status": 400
}
}

Invalid Year​

This error is used when the year value is not a valid number.

{
"code": "invalid_year",
"message": "Invalid year, year must be a number.",
"data": {
"status": 400
}
}

Invalid Date​

This error indicates that the provided date string is not in a recognizable or valid format.

{
"code": "invalid_date",
"message": "Invalid date, date must be a valid date string.",
"data": {
"status": 400
}
}