Frequently asked questions
Can't find what you're looking for? Check the docs or email us.
Getting started
How do I get started?↓
Sign up at plotmarks.com, copy your API key from the dashboard, and make your first API call. The dashboard has copy-paste curl examples for every step: create a chart, push data, embed the iframe.
Is it really free?↓
Yes. Free accounts get 5 chart slots with no credit card required. Sign up and have a working embedded chart in under 5 minutes.
Do I need a credit card to sign up?↓
No. The free tier requires only an email address.
How long does it take to get a chart working?↓
Under 5 minutes for most developers. Create an account, copy the API key, run two curl commands (create chart, push data), paste the embed URL. The dashboard has pre-filled curl examples so you can skip writing the requests from scratch.
How it works
What is a chart slot?↓
A chart slot is a persistent resource on PlotMarks. It has an ID, a chart type, a configuration, and an embed URL. You create it once. After that, you push data to it as many times as you like. The embed URL never changes, but the chart always reflects the latest data you pushed.
What's the difference between a static and live iframe?↓
A static iframe renders once with whatever data was last pushed and does not update automatically (think of it as a snapshot). A live iframe polls for new data on a configurable interval (30 seconds to 24 hours on free, faster on Pro) and updates in place without a page reload.
Can I change the chart data without changing the embed URL?↓
Yes, that's the core feature. You push new data to the same chart slot and the embed URL stays identical. Any page or app embedding that URL automatically shows the updated data on the next poll (for live iframes) or next page load (for static iframes).
Can I update a chart from a cron job or script?↓
Yes, that's a primary use case. Any scheduled process that can make an HTTP POST request can push new data. The chart stays current automatically with no manual dashboard interaction.
What happens if I push data multiple times quickly?↓
Each push is a full replacement. The previous data is deleted and the new data is stored. Only the latest push is shown. If you push data faster than the live iframe's refresh interval, some intermediate states won't be visible, but the chart will always converge to the most recently pushed data.
Technical
What languages and stacks does this work with?↓
Any language that can make HTTP requests: Python, Node.js, Go, Ruby, PHP, Java, bash, or anything else. If it can POST JSON with an Authorization header, it works with PlotMarks.
Can I use PlotMarks from a serverless function?↓
Yes. The API is a standard HTTPS REST API. Serverless functions, edge workers, Lambda functions, Cloud Functions: any environment that can make outbound HTTP requests works.
Is there a limit on how often I can push data?↓
The live iframe refresh interval determines how often the chart polls for updates. There's no point pushing data faster than that interval since intermediate states won't be visible. Rate limiting across all API endpoints is planned for a future release.
Is there a payload size limit?↓
Current limits: up to 5 data series per chart, up to 1,000 data points per series. These exist for rendering performance as much as storage (a bar chart with 1,000 bars is visually meaningless). Per-plan data point limits with lower free-tier caps are planned.
Embed & display
How is this different from Chart.js, Recharts, or D3?↓
Chart.js, Recharts, and D3 are frontend libraries. You install them in your app, write rendering code, manage chart state, handle data updates, and maintain chart-specific frontend code. PlotMarks is a hosted service: your backend pushes data via API and the chart is served as an embeddable iframe. No frontend code required.
Does the iframe resize responsively?↓
Yes. The chart canvas is responsive and fills the iframe container. Set the iframe width to 100% and a fixed height and it adapts to any container width.
Will the chart work on mobile?↓
Yes in a browser iframe. For native mobile apps, the recommended approach is to load the embed URL in a WebView: WKWebView on iOS, WebView on Android, or react-native-webview for React Native. The chart renders and polls for updates inside the WebView without any native chart library needed.
Can I embed a chart in Notion, Confluence, or a static HTML page?↓
Yes for any platform that accepts iframe embeds. Notion supports iframes via the /embed block. Confluence supports iframes via the HTML macro. Any static HTML page accepts a standard <iframe> tag.
The chart animation looks choppy in Safari. Why?↓
Safari throttles requestAnimationFrame in cross-origin iframes more aggressively than Chrome or Edge. The entry animation is affected but the chart data and live updates work correctly. Disabling the entry animation (a one-line config change) resolves it if it becomes a problem.
Chart types & configuration
What chart types are supported?↓
Bar, line, pie, doughnut, scatter, and radar. All types are configured via JSON at chart creation time.
Can I have multiple data series on one chart?↓
Yes. Bar and line charts support up to 5 series. Scatter and radar also support multiple series. Each series has its own color, style, and data.
Can I customize colors, labels, and axis ranges?↓
Yes. Each chart type exposes its own set of config options: axis labels, Y-axis min/max bounds, stacked vs grouped bars, line fill, curve tension, doughnut cutout percentage, pie rotation angle, and more. See the docs for the full list per chart type.
Can I change the chart type or config after creation?↓
Not currently. Chart type and config are set at creation time. To change the type, delete the chart slot and create a new one. Updating chart config after creation is on the roadmap.