Build with the API
API quickstart
Create a company, get an API key, upload a spreadsheet and read its report, all from code.
This is the quickstart for developers. You will create a company, get an API key, upload a spreadsheet and read the quality report Gridline writes for it, all from code. It takes about ten minutes. If you would rather click than type, the dashboard quickstart does the same in five.
1. Create your company
Registering creates the company and its first person, the admin. Nothing can sign in until the address is confirmed, so Gridline emails an activation link first.
curl https://gridline-data-analysis-app.duckdns.org/api/auth/register-company \
-H "Content-Type: application/json" \
-d '{
"companyName": "Acme Logistics",
"email": "nino@acme.com",
"password": "a long passphrase",
"country": "GE",
"industry": "logistics"
}'Open the link in the email to activate. Passwords are at least 8 characters. Country is a two-letter code such as GE or US. Industry is one of finance, e-commerce, healthcare, education, logistics, manufacturing, media, real-estate, technology or other.
2. Sign in and choose a plan
Signing in returns a short-lived access token (15 minutes). Choosing the Free plan needs no card and takes effect at once.
# Sign in
curl https://gridline-data-analysis-app.duckdns.org/api/auth/login \
-H "Content-Type: application/json" \
-d '{ "email": "nino@acme.com", "password": "a long passphrase" }'
# Choose the Free plan, using the accessToken from the answer above
curl https://gridline-data-analysis-app.duckdns.org/api/subscriptions/me \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "plan": "free" }'3. Create an API key
A program should use an API key, not your password. A key is a name for you: it can do what you can, narrowed to the scopes you pick. This one may read and write files.
curl https://gridline-data-analysis-app.duckdns.org/api/api-keys \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Quickstart", "scopes": ["files:read", "files:write"] }'4. Upload a spreadsheet
Send the file as multipart/form-data in a field called file. CSV, XLS and XLSX are accepted, up to 25 MB.
curl https://gridline-data-analysis-app.duckdns.org/api/files \
-H "Authorization: Bearer gl_live_YOUR_KEY" \
-F "file=@sales-q3.csv"Gridline answers 201 with the file:
{
"id": "5b0c1f1e-6a63-4c0e-9d6f-0d9a3f2b7a11",
"originalName": "sales-q3.csv",
"mimeType": "text/csv",
"sizeBytes": 48213,
"visibility": "company",
"datasetId": "5b0c1f1e-6a63-4c0e-9d6f-0d9a3f2b7a11",
"version": 1,
"isLatest": true,
"uploaderId": "…",
"grantedUserIds": [],
"createdAt": "2026-10-02T09:14:03.221Z"
}5. Read the quality report
The report is built in the background, usually within seconds. Until it is ready, status is queued or profiling, so ask again shortly.
curl https://gridline-data-analysis-app.duckdns.org/api/files/FILE_ID/report \
-H "Authorization: Bearer gl_live_YOUR_KEY"{
"fileId": "5b0c1f1e-…",
"status": "ready",
"metrics": {
"rowCount": 1204,
"columnCount": 6,
"emptyRows": 0,
"duplicateRows": 3,
"columns": [
{ "name": "amount", "inferredType": "number", "nullPercent": 0.4, "inconsistent": false }
]
},
"narrative": { "summary": "…", "recommendations": ["…"], "model": "…" },
"qualityScore": 92,
"ruleResults": []
}