Supergood | CoConstruct API

Supergood | CoConstruct API

Programmatically access CoConstruct construction project data, selections, budgets, schedules, and communications with a stable REST API. Supergood builds and operates production-grade, unofficial CoConstruct integrations so your team can automate field and office workflows without heavy custom engineering.

Plain English: CoConstruct is project management and financial software used by custom home builders and remodelers to run jobs end-to-end. An unofficial API lets you programmatically pull project lists, clients and trade partners, selections and allowances, change orders, budgets and purchase orders, schedules and timesheets, messages, and documents—and push new records or approvals back into CoConstruct.

For a tech company integrating with CoConstruct, this means you can ingest up-to-the-minute job data for dashboards, sync budgets and POs to your ERP/accounting, automate client selection workflows from your product, or enrich your platform with schedules, time entries, and site photos. You can also push new change orders, generate purchase orders for trades, capture client approvals, attach documentation, and keep downstream systems (e.g., QuickBooks, analytics, scheduling) in lockstep.

What is CoConstruct?

CoConstruct (https://www.coconstruct.com/) is a cloud platform for residential construction management that centralizes preconstruction, project execution, financials, and client/trade communications. Builders use CoConstruct to estimate and budget, manage client selections and allowances, issue change orders and purchase orders, sync with accounting, schedule work, track time, and collaborate via a client/trade partner portal.

Core product areas include:

  • Preconstruction & Sales (e.g., Leads, Proposals, Estimates, Bid Requests)
  • Project Management (e.g., Schedules, To-Dos, Daily Logs, Warranty/Punch)
  • Financials (e.g., Budgets, Selections & Allowances, Change Orders, Purchase Orders, Client Invoices, QuickBooks Sync)
  • Collaboration & Documents (e.g., Client/Trade Partner Portal, Messages, Photos/Files)

Common data entities:

  • Companies, Users, Clients, and Trade Partners
  • Projects (metadata, addresses, dates, status)
  • Selections & Allowances (categories, options, chosen items, pricing)
  • Budgets, Estimates, Cost Codes, Cost Categories
  • Change Orders (scope, line items, markups, approvals)
  • Purchase Orders (commitments to trades/vendors)
  • Invoices and Payments (often synced to QuickBooks)
  • Bid Packages and Responses
  • Schedules and Tasks
  • Timesheets and Labor Entries
  • To-Dos, Warranty Tickets, Messages, Photos, Attachments

The CoConstruct Integration Challenge

CoConstruct is built for builders and their clients/trade partners, but transforming portal-first workflows into reliable automation is nuanced:

  • Role- and portal-specific flows: Clients, builders, and trades see different data and approval states for selections, change orders, and schedules
  • Financial rigor: Allowances, markups, taxes, and approval histories must be computed and respected programmatically
  • Accounting sync: QuickBooks mappings (customers:jobs, items, classes, cost codes) require careful normalization
  • Portal-first features: Many capabilities are optimized for the web app; data is distributed across views, exports, and attachments
  • Authentication and session maintenance: Handling MFA and session rotation reliably without user interaction
  • Large artifacts: Photos/files need staged uploads, time-limited URLs, and checksum validation

How Supergood Creates CoConstruct APIs

Supergood reverse-engineers authenticated browser flows and network interactions to deliver a resilient API endpoint layer for your CoConstruct tenant.

  • Handles username/password, SSO/OAuth, and MFA (SMS, email, TOTP) securely
  • Maintains session continuity with automated refresh and change detection
  • Normalizes responses so you can integrate once and rely on consistent objects across modules
  • Aligns with customer entitlements and role-based permissions to ensure compliant access

Use Cases

Project and Contact Sync

  • Mirror projects, clients, and trade partners into your internal systems
  • Keep status, dates, addresses, and cost codes up to date for analytics and reporting
  • Normalize job numbers and company records across multi-tenant operations

Selections and Allowance Automation

  • Pull selection categories, options, and allowance balances to power client experiences
  • Create or update selections and capture client approvals in your product
  • Trigger orders or POs when selections are finalized; manage lead times and due dates

Financials: Budgets, Change Orders, and Purchase Orders

  • Generate and submit client-visible change orders with line items, markups, and taxes
  • Push purchase orders to trade partners from your procurement system
  • Pull financial statuses and totals to reconcile with ERP/accounting (e.g., QuickBooks)

Scheduling and Time Tracking

  • Ingest schedules and tasks to coordinate field crews and subcontractors
  • Log timesheets with cost codes from your time clock or mobile app
  • Drive notifications and approvals when schedule or labor thresholds are met

Available Endpoints

Authentication

POST /sessions: Establish a session using credentials. Supergood manages MFA (SMS, email, TOTP) and SSO/OAuth when enabled. Returns a short-lived auth token maintained by the platform.

curl --request POST \
  --url https://api.supergood.ai/integrations/<integration_id>/sessions \
  --header 'Authorization: Basic <Base64 encoded token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "username": "[email protected]",
    "password": "<password>",
    "mfa": { "type": "totp", "code": "123456" }
  }'

Example response

{
  "authToken": "eyJhbGciOi...",
  "expiresIn": 3600,
  "user": {
    "id": "u_91bc20",
    "name": "Operations Manager",
    "entitlements": ["projects", "selections", "financials", "scheduling"]
  }
}

POST /sessions/refresh: Refresh an existing token to keep sessions uninterrupted.

Projects

GET /projects: List projects with filters and summary details.

Query parameters

  • status: preconstruction | active | completed | archived
  • updatedFrom, updatedTo: ISO 8601 timestamps
  • clientId, tradePartnerId: strings
  • page, pageSize: integers for pagination

Example response

{
  "items": [
    {
      "projectId": "prj_c3a9f1",
      "name": "Oak Ridge Residence",
      "jobNumber": "OR-2026-014",
      "status": "active",
      "client": {
        "id": "cl_55aa10",
        "name": "Alex & Jamie Carter",
        "email": "[email protected]",
        "phone": "+1-404-555-0102"
      },
      "address": {
        "line1": "1200 Oak Ridge Ln",
        "city": "Nashville",
        "region": "TN",
        "postalCode": "37212",
        "country": "US"
      },
      "budgetSummary": {
        "originalContract": 850000.00,
        "approvedChanges": 32000.00,
        "currentContract": 882000.00,
        "committedCost": 540000.00,
        "actualCost": 412500.00,
        "remainingToCommit": 342000.00
      },
      "startDate": "2026-01-08",
      "endDate": null,
      "updatedAt": "2026-01-21T15:11:00Z"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "total": 1
}

Selections

GET /projects/{projectId}/selections: List selection items, allowance balances, options, and client choices.

Query parameters

  • status: pending | chosen | approved | ordered
  • category: string (e.g., Flooring, Appliances)
  • updatedFrom, updatedTo: ISO 8601 timestamps
  • page, pageSize: integers for pagination
curl --request GET \
  --url https://api.supergood.ai/integrations/<integration_id>/projects/prj_c3a9f1/selections?status=chosen \
  --header 'Authorization: Bearer <authToken>'

Example response

{
  "items": [
    {
      "selectionId": "sel_7d31e2",
      "category": "Flooring",
      "room": "Main Level",
      "question": "Engineered hardwood species and finish",
      "allowance": {
        "budgetedAmount": 25000.00,
        "committedAmount": 22650.00,
        "remainingAmount": 2350.00,
        "unit": "sqft",
        "quantity": 1800
      },
      "options": [
        {"optionId": "opt_01", "name": "White Oak, Natural", "vendorCompanyId": "co_vnd_1402", "unitCost": 11.50, "extendedCost": 20700.00},
        {"optionId": "opt_02", "name": "White Oak, Light Stain", "vendorCompanyId": "co_vnd_1402", "unitCost": 12.50, "extendedCost": 22500.00}
      ],
      "choice": {
        "selectedOptionId": "opt_02",
        "chosenBy": "client",
        "chosenAt": "2026-01-18T09:45:12Z"
      },
      "status": "chosen",
      "dueDate": "2026-01-20",
      "attachments": [
        {"fileName": "finish-sample.jpg", "url": "https://files.supergood.ai/tmp/sel_7d31e2_finish.jpg", "expiresAt": "2026-01-22T00:00:00Z"}
      ],
      "updatedAt": "2026-01-18T09:45:12Z"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "total": 1
}

Change Orders

POST /projects/{projectId}/change-orders: Create a client-facing change order with line items, markups, and optional approval requirements.

curl --request POST \
  --url https://api.supergood.ai/integrations/<integration_id>/projects/prj_c3a9f1/change-orders \
  --header 'Authorization: Bearer <authToken>' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "Upgrade to premium hardwood finish",
    "description": "Client requested upgraded stain and finish on main level flooring.",
    "reasonCode": "client_request",
    "lineItems": [
      {
        "costCodeId": "031500",
        "description": "Material upgrade",
        "quantity": 1800,
        "unit": "sqft",
        "unitCost": 1.25,
        "markupPercent": 10.0,
        "taxPercent": 8.25
      },
      {
        "costCodeId": "031600",
        "description": "Additional labor",
        "quantity": 40,
        "unit": "hour",
        "unitCost": 55.00,
        "markupPercent": 10.0,
        "taxPercent": 0.00
      }
    ],
    "scheduleImpactDays": 2,
    "clientVisible": true,
    "requiresClientApproval": true,
    "attachments": [
      {"fileName": "revised-scope.pdf", "uploadToken": "upl_9ac021"}
    ],
    "referenceId": "sel_7d31e2"
  }'

Example response

{
  "changeOrderId": "co_4b2910",
  "number": "CO-012",
  "status": "pending_approval",
  "totals": {
    "subtotal": 3500.00,
    "markup": 350.00,
    "tax": 288.75,
    "total": 4138.75
  },
  "createdAt": "2026-01-21T12:03:55Z",
  "referenceId": "sel_7d31e2"
}

Purchase Orders

POST /projects/{projectId}/purchase-orders: Issue a purchase order to a trade/vendor with cost-coded line items.

curl --request POST \
  --url https://api.supergood.ai/integrations/<integration_id>/projects/prj_c3a9f1/purchase-orders \
  --header 'Authorization: Bearer <authToken>' \
  --header 'Content-Type: application/json' \
  --data '{
    "vendorCompanyId": "co_vnd_1402",
    "dueDate": "2026-02-01",
    "shipToAddress": {
      "line1": "1200 Oak Ridge Ln",
      "city": "Nashville",
      "region": "TN",
      "postalCode": "37212",
      "country": "US"
    },
    "lineItems": [
      {"costCodeId": "031500", "description": "White Oak, Light Stain", "quantity": 1800, "unit": "sqft", "unitCost": 12.50, "taxPercent": 8.25},
      {"costCodeId": "031600", "description": "Install labor", "quantity": 40, "unit": "hour", "unitCost": 55.00, "taxPercent": 0.00}
    ],
    "notes": "Coordinate delivery with site superintendent.",
    "attachments": [
      {"fileName": "specs.pdf", "uploadToken": "upl_08ab73"}
    ],
    "commitmentReference": "SEL-FLR-2026-01"
  }'

Example response

{
  "purchaseOrderId": "po_7f199a",
  "number": "PO-1045",
  "status": "issued",
  "total": 257,250.00,
  "createdAt": "2026-01-21T13:17:41Z"
}

Get full API Specs →


Technical Specifications

  • Authentication: Username/password with MFA (SMS, email, TOTP) and SSO/OAuth where enabled; supports service accounts or customer-managed credentials
  • Response format: JSON with consistent resource schemas and pagination across modules
  • Rate limits: Tuned for enterprise throughput while honoring customer entitlements and usage controls
  • Session management: Automatic reauth and cookie/session rotation with health checks
  • Data freshness: Near real-time retrieval of projects, selections, change orders, purchase orders, schedules, and timesheets
  • Security: Encrypted transport, scoped tokens, and audit logging; respects CoConstruct role-based permissions
  • Webhooks: Optional asynchronous delivery for long-running workflows (e.g., client approvals, PO issuance)

Performance Characteristics

  • Latency: Sub-second responses for list/detail queries under normal load
  • Throughput: Designed for high-volume project sync and financial document processing
  • Reliability: Retry logic, backoff, and idempotency keys minimize duplicate actions
  • Adaptation: Continuous monitoring for UI changes with rapid adapter updates

Getting Started

  1. Schedule Integration Assessment

Book a 30-minute session to confirm your modules, licensing, and authentication model.

  1. Supergood Builds and Validates Your API

We deliver a hardened CoConstruct adapter tailored to your workflows and entitlements.

  1. Deploy with Monitoring

Go live with continuous monitoring and automatic adjustments as CoConstruct evolves.

Schedule Integration Call →


Frequently Asked Questions

Q: Which CoConstruct modules can this integration cover?

Supergood supports workflows across commonly used modules such as Selections & Allowances, Financials (Budgets, Change Orders, Purchase Orders, Invoices), Scheduling & Timesheets, and Collaboration (Messages, Photos/Files), subject to your licensing and entitlements. We scope coverage during integration assessment.

Q: How are MFA and SSO handled for automation?

We support username/password + MFA (SMS, email, TOTP) and can operate behind SSO/OAuth when enabled. Sessions are refreshed automatically with secure challenge handling.

Q: Can you sync budgets and invoices/POs to our ERP or QuickBooks?

Yes. We can normalize budgets, cost codes, and financial documents (change orders, POs, invoices) to match your ERP schema and deliver updates via webhooks or polling while complying with rate and permission constraints.

Q: Are client selections and attachments supported?

Yes. We support listing and updating selection choices, surfacing allowance balances, and handling attachments via signed uploads, with checksum validation and time-limited URLs.



Ready to automate your CoConstruct workflows?

Supergood can have your CoConstruct integration live in days with no ongoing engineering maintenance.

Get Started →

Read more