JUNO Perks API™

Transaction enrichment, perk matching, and breakage intelligence for credit card rewards

6
Endpoints
99.9%
Uptime
<100ms
Avg Response

Quick Start

1

Get Your API Key

Sign up and generate your API key from the API Keys section

2

Make Your First Request

Use the interactive tester or integrate with your code

3

Start Building

Explore the documentation and examples

API Documentation

POST /v1-enrich Enrich a transaction with perk matches

Enrich a transaction with perk matches and credit eligibility. This is the core differentiator - real-time transaction enrichment.

Request

Request Body
{
  "transaction": {
    "merchant_name": "UBER EATS SAN FRANCISCO",
    "amount": 25.50,
    "currency": "USD",
    "date": "2026-02-14",
    "card_bin": "3797",
    "mcc": "5812",
    "plaid_category": {
      "primary": "Restaurants",
      "detailed": "Fast Food"
    }
  },
  "card_context": {
    "card_id": "amex-platinum-v2025",
    "issuer": "American Express",
    "network": "AMEX"
  }
}

Response

Success Response
{
  "success": true,
  "data": {
    "is_credit_eligible": true,
    "credit_name": "Uber VIP Credit",
    "credit_amount": 15.00,
    "net_cost": 10.50,
    "confidence_score": 0.98,
    "matched_perk": {
      "perk_id": "amex-plat-uber-credit-2025",
      "name": "Uber VIP Credit",
      "type": "statement_credit",
      "cadence": "MONTHLY",
      "max_value": 15.00,
      "requires_enrollment": false
    }
  },
  "metadata": {
    "request_id": "req-abc123",
    "processed_at": "2026-02-14T10:30:00Z",
    "api_version": "v1"
  }
}

Try It Out

GET /v1-cards List all cards with their perks

Get a list of all credit cards with their associated perks. Supports filtering and pagination.

Query Parameters

Parameter Type Required Description
issuer string No Filter by issuer (amex, chase, citi, etc.)
card_type string No Filter by type (consumer, business)
page integer No Page number (default: 1)
per_page integer No Results per page (default: 20, max: 100)

Try It Out

GET /v1-breakage Get breakage and utilization metrics

Access breakage intelligence data - core B2B product for Credit Unions and Fintechs.

Query Parameters

Parameter Type Required Description
metric_type string No Type of metric (breakage_index, amex_utilization, etc.)
issuer string No Filter by issuer
period string No Time period (YYYY-MM) or 'latest' (default)

Try It Out

API Keys

Request API keys to access the JUNO Perks API

Request API Key

Configuration

Get from: Supabase Dashboard → Settings → API
Use either: "Publishable key" (recommended) or "anon public" key (legacy)

API Key Security

  • Keep your API keys secret and secure
  • Never commit API keys to version control
  • Use environment variables in production
  • Rotate keys regularly for security
  • Each key has rate limits based on your tier

Usage Dashboard

Monitor your API usage and rate limits

Requests Today
0
of 10,000
Requests This Month
0
of 300,000
Success Rate
100%
Last 24 hours

Usage Over Time

Endpoint Breakdown

Code Examples

Get started quickly with code examples in your preferred language

JavaScript/TypeScript
// Enrich a transaction
async function enrichTransaction(transaction) {
  const response = await fetch(
    'https://your-project.supabase.co/functions/v1/v1-enrich',
    {
      method: 'POST',
      headers: {
        'Authorization': 'ApiKey YOUR_API_KEY',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        transaction: {
          merchant_name: transaction.merchant_name,
          amount: transaction.amount,
          date: transaction.date
        }
      })
    }
  );
  
  const data = await response.json();
  return data;
}

// Usage
const result = await enrichTransaction({
  merchant_name: 'UBER EATS',
  amount: 25.50,
  date: '2026-01-26'
});

console.log(result.data.enrichment);
Python
import requests
import json

def enrich_transaction(transaction, api_key):
    url = 'https://your-project.supabase.co/functions/v1/v1-enrich'
    headers = {
        'Authorization': f'ApiKey {api_key}',
        'Content-Type': 'application/json'
    }
    payload = {
        'transaction': {
            'merchant_name': transaction['merchant_name'],
            'amount': transaction['amount'],
            'date': transaction['date']
        }
    }
    
    response = requests.post(url, headers=headers, json=payload)
    return response.json()

# Usage
result = enrich_transaction({
    'merchant_name': 'UBER EATS',
    'amount': 25.50,
    'date': '2026-01-26'
}, 'YOUR_API_KEY')

print(result['data']['enrichment'])
cURL
curl https://your-project.supabase.co/functions/v1/v1-enrich \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "transaction": {
      "merchant_name": "UBER EATS",
      "amount": 25.50,
      "date": "2026-01-26"
    }
  }'
Node.js
const fetch = require('node-fetch');

async function enrichTransaction(transaction, apiKey) {
  const response = await fetch(
    'https://your-project.supabase.co/functions/v1/v1-enrich',
    {
      method: 'POST',
      headers: {
        'Authorization': `ApiKey ${apiKey}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        transaction: {
          merchant_name: transaction.merchant_name,
          amount: transaction.amount,
          date: transaction.date
        }
      })
    }
  );
  
  return await response.json();
}

// Usage
enrichTransaction({
  merchant_name: 'UBER EATS',
  amount: 25.50,
  date: '2026-01-26'
}, 'YOUR_API_KEY')
  .then(result => console.log(result.data.enrichment))
  .catch(error => console.error(error));

Support & Resources

📚 Documentation

Complete API reference and guides

View Docs

💬 Community

Join our developer community

Join Discord

🐛 Report Issues

Found a bug? Let us know

GitHub Issues

📧 Contact

Need help? Reach out to our team

Email Us