REST API

Read your Saguaro data from your own tools.

A simple JSON API over your projects, RFIs, pay applications, change orders, contracts, invoices, and subcontractors. Every request is scoped to your company by your API key.

Getting started

Three steps.

API Access is a paid add-on, and it is included in Enterprise.

1. Create a key

In the app, open Settings, then Integrations Hub, and create an API key with the scope you need: read, write, or admin. The full key is shown once, so store it safely.

2. Send it as a Bearer token

Add the header Authorization: Bearer sk_live_... to each request. You only ever see your own company's data.

3. Call an endpoint

Every endpoint is a GET that returns JSON with a data array. Pass limit to size the page. The default is 100 and the maximum is 200.

Endpoints

What you can read.

Base URL https://www.saguarocontrol.net/api/v1

GET /projects

Your jobs: name, address, project number, status, contract amount, start date, substantial completion date, project type.

Query: limit, include_archived

GET /rfis

RFIs: number, subject, status, priority, assignee, response due date, cost impact, schedule impact.

Query: projectId, limit

GET /pay-apps

Pay applications: application number, status, current payment due, period, submitted and certified dates.

Query: projectId, limit

GET /change-orders

Change orders: number, title, status, amount, cost impact, schedule impact, approval date.

Query: projectId, limit

GET /contracts

Contracts: number, title, type, party, trade, amount, status, executed date.

Query: projectId, limit

GET /invoices

Invoices: direction, number, vendor, category, amount, tax, total, status, due and paid dates.

Query: projectId, direction (receivable or payable), limit

GET /subcontractors

Subcontractors: company, contact, email, phone, trade, status, prequalification, insurance expiry.

Query: limit

Example

A request and its response.

Request
curl https://www.saguarocontrol.net/api/v1/rfis?projectId=<project id>&limit=50 \
  -H "Authorization: Bearer sk_live_..."
Response
{
  "data": [
    {
      "id": "...",
      "project_id": "...",
      "rfi_number": 12,
      "subject": "Clarify slab thickness at grid C",
      "status": "open",
      "priority": "high",
      "response_due_date": "2026-11-02",
      "created_at": "2026-10-19T15:04:00Z"
    }
  ],
  "has_more": false
}

When has_more is true, there are more rows than the limit you asked for.

Errors

Status codes.

401

No key, or an invalid or revoked key.

403

The key lacks the scope needed, or API Access is not turned on for your company.

500

Something went wrong on our side. The response carries a reference you can send to support.

Need something the API does not cover yet? Tell us at support@saguarocontrol.net, or look at partners and integrations.

Build on your own data.

Try Saguaro free for 30 days, then turn on API Access when you are ready.