Frequently Asked Questions
Everything you need to know about csv-api.
What is csv-api?
csv-api turns CSV files into REST APIs. Upload a CSV, and we automatically generate a queryable API endpoint with filtering, sorting, and pagination — no backend code required.
How does it work?
Sign up, upload a CSV file, review and confirm your column names and types, and your API is live. Use your API key to authenticate requests and query your data with standard HTTP requests.
What file formats are supported?
We support CSV (.csv) and Excel (.xlsx, .xls) files. For Excel workbooks with multiple sheets, you can choose which sheet to import during the upload process. We auto-detect whether the first row contains headers — if it does, those become your column names; otherwise, columns are labeled A, B, C, etc. We also auto-detect column data types (integer, float, boolean, date, string) during upload.
What are the plan limits?
The Free plan includes 3 datasets, 500 rows per dataset, 500 KB uploads, 100 API requests per hour, 3 API keys, and 1 shared page. The Starter plan ($9/mo) gives you 10 datasets, 5,000 rows, 10 MB uploads, 1,000 requests per hour, 10 API keys, inline data editing, and 5 shared pages. The Pro plan ($29/mo) supports 50 datasets, 50,000 rows, 50 MB uploads, 5,000 requests per hour, 25 API keys, inline data editing, and 50 shared pages. The Scale plan ($79/mo) offers unlimited datasets, 200K+ rows, 100 MB uploads, 25,000 requests per hour, 50 API keys, inline data editing, and unlimited shared pages.
How do I authenticate API requests?
Include your API key in the Authorization header as a Bearer token:
Authorization: Bearer YOUR_API_KEY. You can also pass it as a query parameter: ?api_key=YOUR_API_KEY. You can find your API key on the Account page.
Can I filter, sort, and paginate results?
Yes. Filter by any column using query parameters (e.g.,
?filter[city]=Portland). Sort with the sort parameter (prefix with - for descending). Paginate with page and per_page parameters.
What are natural language queries?
Instead of building query parameters manually, you can use the
prompt parameter to ask questions about your data in plain English (e.g., ?prompt=people older than 30 in Portland). We translate your question into structured filters automatically. Prompts are limited to 128 characters. Each plan includes a per-hour prompt quota — Free gets 5/hr, Starter gets 100/hr, Pro gets 500/hr, and Scale gets 1,000/hr.
What happens to rows beyond my plan limit?
If your CSV file contains more rows than your plan allows, only the rows within your limit will be imported. You'll see a notice during the upload process. Upgrade your plan to import the full file.
Can I edit data after upload?
Yes, on Starter, Pro, and Scale plans. You can add, edit, and delete individual rows through the dashboard. You can also rename columns after the initial upload. To replace the entire dataset, delete it and upload a new file.
How do I share data with others?
Use Shared Data Views to create a public, read-only page for any dataset. Each shared view gets a unique URL that anyone can access without an account or API key. You can set up static filters to show a specific view of the data — for example, only rows where status is "active" or city is "Portland". You can also customize the page title and colors (Starter+), and add your own logo (Pro+). Viewers can browse, paginate, and even use natural language queries on the shared data. The Free plan includes 1 shared page, Starter gets 5, Pro gets 50, and Scale gets unlimited.
Can I upload Excel files with multiple sheets?
Yes. When you upload an .xlsx or .xls file with multiple sheets, csv-api detects all sheets and lets you choose which one to import on the preview page. Each sheet becomes its own dataset with a separate API endpoint. To import multiple sheets from the same workbook, upload the file once for each sheet you need.
Does csv-api generate API documentation?
Yes. Every dataset automatically gets an OpenAPI (Swagger) specification with interactive documentation. Access it from the Swagger Docs link on your dataset page. The spec includes your exact column schema, query parameter details, and a "Try it out" feature for live testing. You can also fetch the raw JSON spec at
/api/v1/datasets/:id/swagger for use with code generators or tools like Postman.
Can I select which columns are returned?
Yes. Use the
fields query parameter to request only the columns you need (e.g., ?fields=name,email,city). This reduces payload size and speeds up responses, especially for datasets with many columns.
How do I export my data?
Click the Export button on your dataset's detail page to download a fresh CSV file with all current data and any edits you've made. This is useful for backups, sharing with colleagues, or importing into other tools.
How do I delete my data?
You can delete individual datasets from the dashboard — this permanently removes the data table and any stored files. To delete your entire account and all associated data, visit the Edit Profile page under Account.
Is my data secure?
Yes. All traffic is encrypted via HTTPS. Your data is stored in a PostgreSQL database with standard security practices. API keys are stored as SHA-256 hashes — we never store the raw key after initial creation. We use session cookies only for authentication — no tracking or analytics cookies.
Does csv-api support CORS?
Yes. csv-api includes CORS headers on all API responses, so you can make cross-origin requests from any frontend application, static site, or single-page app without additional configuration.
How do I upgrade my plan?
Visit the Billing page in your dashboard to view your current plan and upgrade options. Plan changes take effect immediately. You can also manage your subscription, update payment methods, and view invoices through the Stripe customer portal.
What is MCP and how does it work with csv-api?
MCP (Model Context Protocol) is an open standard that lets AI assistants like ChatGPT and Claude connect directly to external data sources. When you enable MCP on a csv-api dataset, AI assistants can query, filter, aggregate, and run SQL against your data through a secure, authenticated connection. You don't need to copy-paste data into prompts — the AI discovers your schema and calls the right tools automatically.
How do I connect my dataset to ChatGPT or Claude?
First, enable MCP on your dataset by clicking the MCP toggle on the dataset page. Then copy the MCP server URL (shown on the dataset page) and add it to your AI client. In ChatGPT, go to Settings → Connected Apps → Add and paste the URL. In Claude Desktop, add it to your
claude_desktop_config.json file. The client will open a browser window for you to authorize access via OAuth.
Which AI assistants support MCP?
Any MCP-compatible client works with csv-api. Currently this includes ChatGPT (OpenAI), Claude Desktop and claude.ai (Anthropic), Cursor, Windsurf, and a growing list of developer tools. Check your AI client's documentation for MCP setup instructions.
Is MCP access secure?
Yes. MCP uses OAuth 2.0 with PKCE (Proof Key for Code Exchange) for authentication — the same standard used by Google, GitHub, and other major platforms. Each dataset gets its own authorization session, your AI client never sees your password, access tokens are stored as SHA-256 hashes, and you can revoke any session instantly from your dataset page.
Does MCP cost extra?
No. MCP is included in all paid plans (Starter, Pro, and Scale). MCP tool calls count against your plan's hourly request quota — Starter gets 500/hr, Pro gets 2,500/hr, and Scale gets 10,000/hr. The free plan does not include MCP access.
What tools can AI assistants use through MCP?
AI assistants get access to four tools:
get_schema (discover column names, types, and row count), query_data (filter, sort, and paginate records), aggregate_data (counts, sums, averages by group), and sql_query (read-only SQL queries up to 1,000 rows). All tools are read-only — AI assistants cannot modify your data.