Skip to main content
The Xano destination sends your users’ CSV or Excel data to one of your own Xano API endpoints. CSVbox reads your API group’s OpenAPI (Swagger) specification, so you pick an endpoint and map sheet columns to its input fields, with no manual URL or payload building.

Before you start

  • A Xano workspace with an API endpoint that accepts the data you want to import, for example POST /customers.
  • Swagger documentation turned on for the API group that contains the endpoint. In Xano, open the API group → Settings and set Swagger documentation to Public or Private (with token). It must not be Disabled.
  • The full spec URL for the API group. For a private group, copy the URL including ?token=....
The spec URL must be publicly reachable. Private and internal network addresses are rejected.

How it works

1

Select Xano as the destination type

Open your sheet, go to Destination, and choose Xano from the list.
2

Load your API spec

Paste your Xano spec URL, for example:
Click Load Endpoints. CSVbox downloads the spec and lists every endpoint that accepts POST, PUT, or PATCH.If the URL has no token= parameter and your docs are protected, add a Docs Auth token. You can use a Bearer token, or a custom header name and value.
3

Select the endpoint

Pick the endpoint that should receive the data. CSVbox loads its input fields (name, type, required, and allowed values) and detects whether the endpoint expects a single object or an array of objects.
4

Test the connection (optional)

Click Test Connection. This is a read-only check: it fetches your spec URL and confirms that it contains a valid paths object. It doesn’t call your endpoint or create any data.
5

Map sheet columns to the endpoint fields

Match each column in your sheet to an input field of the endpoint. You can also map custom attributes, such as user_id, to send them with every row.
  • Use dot notation for nested objects, such as address.city.
  • Use brackets for arrays, such as tags[0] or items[0].sku.
  • Columns you leave unmapped aren’t sent.
  • Required fields from the spec are highlighted. Map all of them, or Xano rejects the request.
CSVbox rebuilds nested and array fields into proper JSON before sending:
6

Save the destination

Click Save. The destination is active for all new uploads.

How data is sent

One request per row

By default, each row becomes one request. Progress is updated after every row.

One request per file

If the request body of the selected endpoint is an array, CSVbox sends all rows in a single request:
CSVbox detects this automatically from your spec. In this mode, a failure affects the whole file, because Xano answers the request as a whole.

Type conversion

CSVbox converts each value to the type declared in your Xano input before sending it.
  • Empty cells are sent as null.
  • A row that fails conversion isn’t sent. It’s logged with the reason, for example field age: cannot coerce 'abc' to integer.

Error handling

Xano plans enforce request limits. Because one-request-per-row mode makes one call per row, large files on low-limit plans can hit a 429. For large imports, use an endpoint that accepts an array, or raise the limit on your Xano plan.

Import results

Row-level errors appear in the import’s error log with the row number, the field (when known), the HTTP status, and the message.

Troubleshooting

Good to know

  • The spec URL and token are stored per sheet. If you regenerate the token in Xano, reload the spec and save again.
  • Switching to a different endpoint resets the available fields, so check your mapping again.
  • Only POST, PUT, and PATCH endpoints are listed.
  • A single file is limited by your plan’s row limit. Rows beyond the limit aren’t sent.