Skip to main content

Usage & Billing

Understanding Chartly's usage limits, billing structure, and how to monitor your consumption to optimize costs and performance.

Plan Comparison

FeatureTrialStarterGrowthEnterprise
Monthly Charts100 total100,0001,000,000Custom
API Keys1 trial key5 keys25 keysUnlimited
Chart FormatsPNG, SVGPNG, SVGPNG, SVGPNG, SVG, PDF
Max Dimensions2000×20002000×20004000×40008000×8000
Cache Duration30 days90 days1 yearCustom
AnalyticsBasicAdvancedCustom
SupportCommunityEmailPriorityDedicated
SLA99.9%99.99%
PriceFree£30/mo£150/moContact

Usage Limits

Chart Generation Limits

Charts are counted based on successful API calls to rendering endpoints:

  • POST /v1/chart (generates new chart)
  • GET /v1/chart (generates new chart)
  • POST /v1/chart/create (creates permanent URL)
  • GET /v1/chart/{id} (serves cached chart)
  • GET /v1/metrics/{id} (analytics only)

Rate Limits

PlanRequests/MinuteRequests/HourBurst Limit
Trial1010020
Starter601,000120
Pro30010,000600
EnterpriseCustomCustomCustom

Dimension Limits

PlanMax WidthMax HeightMax Pixels
Trial2,000px2,000px4M pixels
Starter2,000px2,000px4M pixels
Pro4,000px4,000px16M pixels
Enterprise8,000px8,000px64M pixels

Billing Details

Trial Account

  • Duration: 30 days from first API key generation
  • Limits: 100 total chart generations
  • Features: Full API access, all chart types
  • Restrictions: No account management, limited analytics
  • Upgrade: Seamless transition to paid plans

Starter Plan - £30/month

  • Charts: 100,000 per month
  • Overage: £3 per 1,000 additional charts
  • API Keys: Up to 5 keys
  • Support: Email support (48h response)
  • Analytics: Basic usage dashboard

Growth Plan - £150/month

  • Charts: 1,000,000 per month
  • Overage: £1 per 1,000 additional charts
  • API Keys: Up to 25 keys
  • Support: Priority email + chat (24h response)
  • Analytics: Advanced metrics and insights
  • SLA: 99.9% uptime guarantee

Enterprise Plan - Custom Pricing

  • Charts: Custom volume pricing
  • Features: Everything in Pro plus:
    • Custom chart dimensions
    • PDF output format
    • Dedicated support manager
    • Custom SLA (up to 99.99%)
    • Volume discounts
    • Custom integrations

Billing Cycle

  • Monthly: Billed on the same day each month
  • Annual: 2 months free (16.7% discount)
  • Usage: Charts reset on billing date
  • Overage: Billed in next cycle
  • Proration: Upgrades are prorated

Monitoring Usage

Real-Time Dashboard

Access your usage dashboard at chartly.dev/dashboard:

# Get current usage via API
curl "https://api.chartly.dev/usage/analytics" \
-H "Authorization: Bearer your_session_token"

Response:

{
"currentUsage": {
"period": "month",
"count": 1547,
"limit": 10000,
"remaining": 8453,
"resetTime": "2024-02-01T00:00:00.000Z"
},
"quickStats": {
"totalRequests": 1547,
"successRate": 98.7,
"averageRenderTime": 245,
"cacheHitRate": 78.2
}
}

Usage Alerts

Set up automatic alerts when approaching limits:

Email Notifications

  • 80% of monthly limit reached
  • 95% of monthly limit reached
  • Overage occurred

Webhook Notifications

// Configure webhook endpoint
POST /webhooks/usage
{
"event": "usage_threshold",
"threshold": 80,
"current_usage": 8000,
"limit": 10000,
"account_id": "acc_abc123"
}

API Key Usage Tracking

Monitor usage per API key for better cost allocation:

curl "https://api.chartly.dev/keys" \
-H "Authorization: Bearer your_session_token"

Response:

[
{
"id": "key_abc123",
"label": "Production API",
"usage_this_month": 856,
"last_used": "2024-01-15T14:22:00.000Z",
"created": "2024-01-01T10:00:00.000Z"
},
{
"id": "key_def456",
"label": "Development API",
"usage_this_month": 124,
"last_used": "2024-01-15T09:45:00.000Z",
"created": "2024-01-10T15:30:00.000Z"
}
]

Cost Optimization

Efficient Chart Usage

1. Use Caching Effectively

// Good: Create permanent URLs for repeated use
const chartUrl = await chartly.createChart(config, { width: 600, height: 400 });
// This URL can be reused without additional API calls

// Avoid: Regenerating identical charts
const chart1 = await chartly.generateChart(config); // Counts as 1 usage
const chart2 = await chartly.generateChart(config); // Counts as 1 usage (unnecessary)

2. Optimize Dimensions

// Good: Reasonable dimensions for use case
const dashboardChart = { width: 400, height: 300 }; // 120K pixels

// Avoid: Unnecessarily large charts
const oversizedChart = { width: 2000, height: 2000 }; // 4M pixels

3. Batch Operations

// Good: Batch multiple charts at once
const charts = await Promise.all([
chartly.createChart(salesData, opts),
chartly.createChart(trafficData, opts),
chartly.createChart(revenueData, opts)
]);

// Avoid: Sequential individual requests
// (Same total usage, but better performance)

Signed URLs for Public Access

Use signed URLs to share charts without consuming additional API calls:

// Generate once, share multiple times
const signedUrl = chartly.createSignedUrl(chartConfig, {
expirationMinutes: 1440, // 24 hours
width: 600,
height: 400
});

// Share this URL in emails, Slack, etc.
// No additional API calls when users view the chart

Development vs Production

Use separate API keys and accounts:

// Development environment
const devChartly = new ChartlyClient({
apiKey: process.env.CHARTLY_DEV_API_KEY
});

// Production environment
const prodChartly = new ChartlyClient({
apiKey: process.env.CHARTLY_PROD_API_KEY
});

Payment & Invoicing

Payment Methods

  • Credit/Debit Cards: Visa, MasterCard, American Express
  • PayPal: Available for all plans
  • ACH/Bank Transfer: Enterprise plans only
  • Wire Transfer: Enterprise plans only

Invoicing

  • Automatic: Charges occur on billing date
  • Receipts: Emailed immediately after payment
  • Invoices: Available in dashboard with download
  • VAT/Tax: Applied based on billing address
  • Purchase Orders: Enterprise plans only

Failed Payments

If payment fails:

  1. Day 1: Email notification + retry attempt
  2. Day 3: Second retry + email warning
  3. Day 7: Final retry + account suspension warning
  4. Day 10: Account suspended (read-only access)
  5. Day 30: Account terminated + data deletion

During suspension:

  • ✅ Existing charts remain accessible
  • ✅ Dashboard and analytics available
  • ❌ New chart generation disabled
  • ❌ API key creation disabled

Plan Management

Upgrading Plans

Upgrades take effect immediately with prorated billing:

# Via API
curl -X POST "https://api.chartly.dev/subscription/create" \
-H "Authorization: Bearer your_session_token" \
-d '{
"plan": "pro",
"billing_cycle": "monthly"
}'

Response:

{
"checkout_url": "https://checkout.stripe.com/pay/cs_...",
"effective_date": "2024-01-15T10:30:00.000Z",
"proration_amount": 89.67
}

Downgrading Plans

Downgrades take effect at the next billing cycle:

  • Immediate: New limits apply to API usage
  • Billing: Reduced rate starts next cycle
  • Credits: Unused credits carry forward

Cancellation

Cancel anytime with no penalties:

  1. Immediate Effect: No new charges
  2. Access: Full access until end of billing period
  3. Data: Account remains read-only for 30 days
  4. Reactivation: Full restoration within 30 days

Enterprise Features

Volume Discounts

Monthly ChartsDiscount
500K - 1M10%
1M - 5M20%
5M - 10M30%
10M+Custom

Custom SLAs

  • Standard: 99.9% uptime
  • Premium: 99.95% uptime
  • Mission Critical: 99.99% uptime

Dedicated Infrastructure

  • Private Endpoints: Custom domain (charts.yourcompany.com)
  • Regional Deployment: Choose your data center
  • Isolated Processing: Dedicated rendering capacity
  • Custom Caching: Extended retention periods

Priority Support

  • Dedicated Manager: Named support contact
  • 24/7 Response: Critical issues < 1 hour
  • Phone Support: Direct line to technical team
  • Custom Integration: Help with complex setups

Compliance & Security

Data Retention

PlanChart CacheAnalyticsBilling
Trial30 days30 daysN/A
Starter90 days1 year7 years
Pro1 year3 years7 years
EnterpriseCustomCustom7 years

Data Management

  • Smart Caching: Configurable retention periods
  • Data Export: Download your data anytime
  • Data Deletion: Complete data removal on request
  • Transparent Policies: Clear usage and privacy policies

Security Certifications

  • SOC 2 Type II: Annual compliance audit
  • ISO 27001: Information security management
  • Edge Security: Cloudflare's enterprise-grade protection
  • PCI DSS: Payment card security standards

Billing API

Get Current Plan

curl "https://api.chartly.dev/billing/info" \
-H "Authorization: Bearer your_session_token"

Response:

{
"plan": "pro",
"billing_cycle": "monthly",
"usage_limit": 100000,
"current_usage": 15847,
"billing_period_start": "2024-01-01T00:00:00.000Z",
"billing_period_end": "2024-02-01T00:00:00.000Z",
"next_billing_date": "2024-02-01T00:00:00.000Z",
"amount_due": 149.00
}

Usage History

curl "https://api.chartly.dev/usage/analytics?days=90" \
-H "Authorization: Bearer your_session_token"

Invoices

curl "https://api.chartly.dev/billing/invoices" \
-H "Authorization: Bearer your_session_token"

Response:

{
"invoices": [
{
"id": "inv_abc123",
"date": "2024-01-01T00:00:00.000Z",
"amount": 149.00,
"status": "paid",
"download_url": "https://api.chartly.dev/billing/invoices/inv_abc123/pdf"
}
]
}

FAQ

Billing Questions

Q: Do unused charts roll over to the next month? A: No, chart limits reset each billing cycle. However, overage credits can carry forward.

Q: What happens if I hit my limit mid-month? A: Your account will continue working with overage charges applied. You'll be billed for excess usage in the next cycle.

Q: Can I change my billing cycle? A: Yes, you can switch between monthly and annual billing. Changes take effect at the next billing date.

Q: Do you offer refunds? A: We offer prorated refunds for downgrades and cancellations within the first 30 days.

Usage Questions

Q: How do I reduce my chart usage? A: Use permanent chart URLs and signed URLs for sharing instead of regenerating identical charts.

Q: Do cached chart views count against my limit? A: No, only chart generation APIs count. Serving cached charts via /v1/chart/{id} is unlimited.

Q: Can I track usage by team or project? A: Yes, use separate API keys for different teams/projects and monitor usage per key.


Need Help?