Skip to main content

Endpoints

GET https://api.gu1.ai/batch-import/entity-jobs/{jobId}/failures.csv
GET https://api.gu1.ai/batch-import/entity-jobs/{jobId}/failures
Legacy CSV alias (same file):
GET https://api.gu1.ai/entities/automatic/bulk/imports/{jobId}/failures.csv
  • …/failures.csv → CSV download (failed rows only)
  • …/failures → JSON (failures[] + skips[] when applicable)

Authentication

Authorization: Bearer YOUR_API_KEY
Requires at least one of: transactions:create, entities:bulk_import, events:create.

HTTP responses

StatusWhen
200Job found
401Not authenticated
403Missing permission
404Job not found

CSV columns

ColumnDescription
tax_idRow tax id
typeperson or company
outcomeAlways failed in this export
codeStable failure code — see Failure codes
error_messageHuman-readable detail
Duplicate taxId (bulk manual default): same taxId + same type → skipped_existing, code SKIPPED_DUPLICATE_TAX_ID. Does not appear in failures.csv. Use JSON skips[] or the full job report.

JSON response

{
  "success": true,
  "jobId": "…",
  "kind": "entity_automatic",
  "status": "completed",
  "totalItems": 100,
  "succeeded": 97,
  "failed": 2,
  "skipped": 1,
  "failures": [
    {
      "taxId": "20123456789",
      "type": "company",
      "outcome": "failed",
      "code": "DUPLICATE_EXTERNAL_ID",
      "message": "An entity with external ID \"X\" already exists…"
    }
  ],
  "truncated": false,
  "failuresTotal": 2,
  "skips": [
    {
      "taxId": "30111222333",
      "type": "person",
      "outcome": "skipped_existing",
      "code": "SKIPPED_DUPLICATE_TAX_ID"
    }
  ],
  "skipsTotal": 1
}
Skip codeMeaning
SKIPPED_DUPLICATE_TAX_IDManual bulk: taxId+type already existed
SKIPPED_ENTITY_ALREADY_EXISTSAutomatic bulk: entity already existed
failures.csv contains only outcome=failed rows. See also: Import entities (CSV), Failure codes.