Usage & Billing
Understanding Chartly's usage limits, billing structure, and how to monitor your consumption to optimize costs and performance.
Plan Comparison
Feature | Trial | Starter | Growth | Enterprise |
---|---|---|---|---|
Monthly Charts | 100 total | 100,000 | 1,000,000 | Custom |
API Keys | 1 trial key | 5 keys | 25 keys | Unlimited |
Chart Formats | PNG, SVG | PNG, SVG | PNG, SVG | PNG, SVG, PDF |
Max Dimensions | 2000×2000 | 2000×2000 | 4000×4000 | 8000×8000 |
Cache Duration | 30 days | 90 days | 1 year | Custom |
Analytics | ❌ | Basic | Advanced | Custom |
Support | Community | Priority | Dedicated | |
SLA | ❌ | ❌ | 99.9% | 99.99% |
Price | Free | £30/mo | £150/mo | Contact |
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
Plan | Requests/Minute | Requests/Hour | Burst Limit |
---|---|---|---|
Trial | 10 | 100 | 20 |
Starter | 60 | 1,000 | 120 |
Pro | 300 | 10,000 | 600 |
Enterprise | Custom | Custom | Custom |
Dimension Limits
Plan | Max Width | Max Height | Max Pixels |
---|---|---|---|
Trial | 2,000px | 2,000px | 4M pixels |
Starter | 2,000px | 2,000px | 4M pixels |
Pro | 4,000px | 4,000px | 16M pixels |
Enterprise | 8,000px | 8,000px | 64M 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
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:
- Day 1: Email notification + retry attempt
- Day 3: Second retry + email warning
- Day 7: Final retry + account suspension warning
- Day 10: Account suspended (read-only access)
- 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:
- Immediate Effect: No new charges
- Access: Full access until end of billing period
- Data: Account remains read-only for 30 days
- Reactivation: Full restoration within 30 days
Enterprise Features
Volume Discounts
Monthly Charts | Discount |
---|---|
500K - 1M | 10% |
1M - 5M | 20% |
5M - 10M | 30% |
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
Plan | Chart Cache | Analytics | Billing |
---|---|---|---|
Trial | 30 days | 30 days | N/A |
Starter | 90 days | 1 year | 7 years |
Pro | 1 year | 3 years | 7 years |
Enterprise | Custom | Custom | 7 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?
- 📊 Usage Questions: contact@chartly.dev
- 💳 Billing Support: contact@chartly.dev
- 📞 Enterprise Sales: contact@chartly.dev