Import RFID tokens from JSON or CSV
post/v1/tenants/{tenant_id}/tokens/import
Requires an API key
Requires tokens:write (tenant-admin). Up to 5,000 rows as JSON {"rows": [...]} or text/csv with a header row (id_token, type, status, expires_at, label, external_reference); at most 1 MiB. Rows match existing tokens by external_reference, else by id_token (case-insensitive): new values are created, given fields of existing ones updated, others reported unchanged, so re-running a file is safe. Absent fields keep their current value (new tokens: ISO14443, Accepted). dry_run=true validates and plans without writing and needs no Idempotency-Key. Invalid rows are reported per row and skipped; valid rows still apply. A 503 outcome_unknown leaves some rows applied: re-run the same file with a new key.
Path parameters
- tenant_idintegerRequired
Query parameters
- dry_runbooleanDefault
false
Headers
- idempotency-keystring | null
Request body
- rowsarray of objectRequiredUp to 5,000 rows, each with id_token and optionally type, status, expires_at, label and external_reference.
Returns · 200
- dry_runbooleanRequired
- countsobjectRequiredRows per action: create, update, unchanged, error. A dry run reports what applying would do.
- rowsarray of ImportRowResultRequiredEvery error row, and every row that changes or would change a token.
Child attributes
- rowintegerRequired1-based data row (the CSV header is not counted).
- id_tokenstring | nullRequired
- actionenumRequiredOne of
create,update,unchanged,error - token_idinteger | null
- codestring | nullWhy an error row was refused: invalid, duplicate_in_file, token_reserved, token_ambiguous, token_type_mismatch or external_reference_conflict.
- messagestring | null
POST /v1/tenants/{tenant_id}/tokens/import
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/tokens/import" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Idempotency-Key: order-2026-09-30-0001" \
-H "Content-Type: application/json" \
-d '{
"rows": [
{}
]
}'Response · 200
{
"dry_run": false,
"counts": {},
"rows": [
{
"row": 1,
"id_token": "string",
"action": "create",
"token_id": 1,
"code": "string",
"message": "string"
}
]
}Try it is not available here yetRequests from this page are off until the production API at
https://api.ivoracharge.com is public. Use the code samples from your application server; Ivora grants production access. Keys are created in Developer tools.