Skip to main content
Tango Analytics exposes a set of integrations that let your client systems read from and write to Tango’s lease, project, and finance modules. Every integration falls into one of two delivery styles — REST API or SFTP file — and shares a small number of common patterns described below.

Quickstart

Send your first request to Tango in under five minutes — an end-to-end example with authentication, submission, and status polling.

API Reference

Browse the per-integration OpenAPI 3.1 specs with request/response schemas, parameters, and example payloads.

Integration domains

Pick the area that matches what you’re integrating. Each integration page links to its OpenAPI spec and a Markdown reference (validations, field tables, edge cases).

Lease integrations

Accounts Payable & Receivable, GL accruals, lease attributes, sales / percent rent, CPI indices, and lease invoices. Covers the day-to-day data that moves between your ERP and Tango’s Lease module.

Projects integrations

Purchase Orders, Change Orders, Project Invoices, Contracts, Project Attributes, and Total Approved Budgets. Drives the cost-management side of Tango’s Projects module.

Two delivery styles

Most modern Tango integrations are async REST APIs over HTTPS. Submission returns a gu_id immediately, and the client polls a shared /v1/batch/status endpoint to track processing.
Why async? Most batch payloads contain thousands of records. Synchronous processing would hold the HTTP connection open for minutes; instead Tango queues the work, returns a gu_id instantly, and lets your code poll on its own schedule.

Common patterns

Every REST API call requires two headers:For SFTP integrations, you’ll receive a per-environment SFTP username and password (or a public-key fingerprint to register). Contact your Tango onboarding lead to request credentials.
Never check x-api-key, SFTP passwords, or credentials into source control. Use a secret manager and inject them at runtime.
Submission endpoints (PUT/POST and most GETs) return immediately with a gu_id. To retrieve the final result you call /v1/batch/status (or /v1batch/status on a couple of legacy integrations — check the per-integration spec):
Recommended polling cadence: 5–30 seconds initially, backing off to 1–2 minutes for long-running batches.
GET-style outbound integrations (AP Outbound, AR Outbound, GL, Lease Invoices, Lease Outbound) return data in pages of 5000 records. The status response carries pagination metadata:
Pass ?page_no=N to fetch a specific page; the same gu_id can be polled across pages and re-polled later.
For outbound APIs, any field that is null or unconfigured in Tango is omitted entirely from the JSON — you will not see "field": null or "field": "". Your client code must treat the absence of a key as “no value”.For inbound payloads, you may either omit optional fields or send them as empty strings; both are accepted.
Tango uses literal MM/DD/YYYY strings (e.g. "06/11/2013") for date fields — not ISO 8601. This is documented per-field in each spec but is consistent across integrations.Datetime values that include a time component (rare) use the same date prefix plus a 24-hour time component.
Every REST API has two base URLs:SFTP follows the same split: sftp.tangoanalytics.com for production, sftpdev.tangoanalytics.com for SIT/UAT. The path layout (e.g. /outbound/ap) is identical between environments.

What’s in each integration’s reference

Every integration ships two documents in this docs site:
  • A .yaml OpenAPI 3.1 spec — machine-readable, suitable for code generation, Postman import, and Spectral linting.
  • A .md companion — human-readable summary with transport details, integration logic, the validations table, and an “Open Questions” section listing anywhere the source design doc was silent or ambiguous.
The Open Questions section in each Markdown is intentional — it surfaces inferences the documentation tooling made when the source was incomplete. Treat each item as something to confirm with the integration owner before going live.

Next steps

Start the quickstart

Walk through a complete request/response cycle in under five minutes.

Browse all integrations

See every integration grouped by domain (Lease vs Projects) and by direction (inbound vs outbound).