MY PROP JOURNAL

Report cards

Daily, weekly, and monthly performance reviews with rich text analysis.

Overview

Report Cards provide structured performance reviews for specific time periods. Document what went well, areas for improvement, and lessons learned.

Period types:

  • daily — Daily trading reviews
  • weekly — Weekly performance analysis
  • monthly — Monthly trading summaries

Features:

  • Multi-format content support
  • Timezone-aware date ranges
  • Account category filtering
  • Media URL extraction

List report cards

Endpoint: GET /api/v1/report-cards

Query parameters

ParameterTypeDescription
offsetintegerPagination offset (default 0)
limitintegerItems per page, max 100 (default 20)
period_typestringFilter by: daily, weekly, monthly (default daily)
account_categorystringFilter by: prop or retail
start_datestringFilter cards from this date
end_datestringFilter cards until this date
formatstringContent format: json, html, or markdown
content_formatstringAlias for format
include_mediabooleanInclude media URLs

Example

curl "https://app.mypropjournal.com/api/v1/report-cards?period_type=daily&start_date=2026-05-01" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Example response

{
  "data": [
    {
      "id": "abc-123",
      "period_type": "daily",
      "start_date": "2026-05-13",
      "end_date": "2026-05-13",
      "timezone": "America/New_York",
      "account_category": "prop",
      "content": { ... },
      "content_html": "<h2>Daily Review</h2>...",
      "content_markdown": "## Daily Review\n...",
      "created_at": "2026-05-13T18:00:00Z"
    }
  ],
  "pagination": {
    "total": 45,
    "limit": 20,
    "offset": 0,
    "has_more": true
  }
}

Get single report card

Endpoint: GET /api/v1/report-cards/{id}

curl "https://app.mypropjournal.com/api/v1/report-cards/abc-123?format=markdown&include_media=true" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Create report card

Endpoint: POST /api/v1/report-cards

Request body

FieldTypeRequiredDescription
period_typestringYesType: daily, weekly, or monthly
start_datestringYesPeriod start date (ISO 8601)
end_datestringYesPeriod end date (ISO 8601)
timezonestringNoTimezone (default America/New_York)
account_categorystringNoAccount type: prop or retail (default prop)
contentobjectNoTipTap JSON content
content_htmlstringNoHTML content
content_markdownstringNoMarkdown content

Example

await fetch('https://app.mypropjournal.com/api/v1/report-cards', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer mpj_your_api_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    period_type: 'daily',
    start_date: '2026-05-13',
    end_date: '2026-05-13',
    timezone: 'America/New_York',
    account_category: 'prop',
    content_markdown: `# Daily Review - May 13, 2026

**Performance:**
- P/L: +$450
- Trades: 3 wins, 1 loss
- Win Rate: 75%

**What Went Well:**
✅ Followed my plan exactly
✅ Took profits at planned targets
✅ Stopped trading after hitting daily goal

**Areas for Improvement:**
⚠️ Hesitated on the first setup (fear)
⚠️ Could have sized up on high-probability trade

**Lessons Learned:**
Trust the process. The first trade of the day is often the best.

**Tomorrow's Focus:**
- Execute first setup without hesitation
- Consider scaling position size on A+ setups
`
  })
});

Update report card

Endpoint: PUT /api/v1/report-cards/{id}

curl -X PUT "https://app.mypropjournal.com/api/v1/report-cards/abc-123" \
  -H "Authorization: Bearer mpj_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "content_markdown": "# Updated Review\n\nAdditional insights..."
  }'

Delete report card

Endpoint: DELETE /api/v1/report-cards/{id}

curl -X DELETE "https://app.mypropjournal.com/api/v1/report-cards/abc-123" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Use cases

Weekly performance summary

import requests
from datetime import datetime, timedelta

def generate_weekly_summary(api_key):
    """Generate a comprehensive weekly review"""
    # Get all daily report cards from last week
    end_date = datetime.now()
    start_date = end_date - timedelta(days=7)
    
    response = requests.get(
        'https://app.mypropjournal.com/api/v1/report-cards',
        headers={'Authorization': f'Bearer {api_key}'},
        params={
            'period_type': 'daily',
            'start_date': start_date.isoformat(),
            'end_date': end_date.isoformat(),
            'format': 'markdown'
        }
    )
    
    daily_cards = response.json()['data']
    
    # Compile weekly summary
    summary = f"# Weekly Summary ({start_date:%Y-%m-%d} to {end_date:%Y-%m-%d})\n\n"
    summary += f"## Daily Reviews\n\n"
    
    for card in daily_cards:
        summary += f"### {card['start_date']}\n\n"
        summary += f"{card['content']}\n\n---\n\n"
    
    # Create weekly report card
    weekly_response = requests.post(
        'https://app.mypropjournal.com/api/v1/report-cards',
        headers={'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json'},
        json={
            'period_type': 'weekly',
            'start_date': start_date.isoformat(),
            'end_date': end_date.isoformat(),
            'content_markdown': summary
        }
    )
    
    return weekly_response.json()

weekly_summary = generate_weekly_summary('mpj_your_key')
print(f"Created weekly summary: {weekly_summary['data']['id']}")

Next steps