Skip to content
DevelopersGet an API key

Spreadsheets and CSV

Add format=csv to any list and you get the same page as a spreadsheet, one row per record.

curl "https://harlo-api-dev.pages.dev/v1/invoices?format=csv&limit=100" \
  -H "Authorization: Bearer $HARLO_API_KEY"
harlo-invoices.csv
id,object,number,status,load.id,load.number,load.customer_reference,customer.id,customer.name,…,amount,amount_paid,balance,lines,…
a3b858d0-…,invoice,INV-L-00001,paid,d614de50-…,L-00001,BLL-55102,f96a1a46-…,Blue Lake Logistics LLC,…,2760.00,2760.00,0.00,"[{""type"":""Linehaul"",…}]",…

How records become rows

  • Nested fields become columns with a dot: customer.name, load.number, equipment.type.
  • Lists inside a record (a load's stops, an invoice's lines) stay in one cell as JSON. Use the JSON response if you need them as rows.
  • Columns come in the order the reference lists the fields, so they don't move between pages.
  • A cell that starts with =, +, - or @ is prefixed with an apostrophe so a spreadsheet shows it rather than running it as a formula. Negative numbers are left alone.

More than one page

CSV pages work like JSON pages: up to 100 rows. When there are more, the response has an X-Next-Cursor header; send it back as cursor for the next rows.

Spreadsheets that refresh

For a sheet that updates itself, see Google Sheets or Excel and Power BI. They read every page for you.
NextChangelog