U.S. flag A demo application for the Council on Environmental Quality
Home

Data & Integrations

Programmatic access to PermitSolutions data — inter-agency API connections, full REST coverage, and configurable export profiles for PDF, Excel, GIS, and machine-readable packages.

Start Tour

Connect funding partners, state agencies, and federal reviewers to a shared project record. Each integration is scoped by role — agencies receive only the permits and documents relevant to their review, while program managers retain full portfolio access.

Inter-agency connections

Agency Status Authentication Data scope Last sync
USFWS U.S. Fish & Wildlife Service Connected OAuth 2.0 · mTLS Permits · species · consultation May 28, 2026
USACE U.S. Army Corps of Engineers Connected OAuth 2.0 · IP allowlist Section 404 · wetlands · navigable waters May 27, 2026
SHPO State SHPO Pending API key · webhook Section 106 · historic properties
BLM BLM Connected OAuth 2.0 Floodplain · NFIP May 26, 2026

Setting up a new connection

Step 1
Register agency integration
Program admin registers the agency partner, assigns scopes, and uploads credentials or certificate.
Step 2
Configure authentication
Choose OAuth 2.0 client credentials, mutual TLS, or signed API keys with IP allowlisting.
Step 3
Map data exchanges
Select inbound webhooks, outbound status pushes, and read-only endpoints for each review type.
Step 4
Validate & activate
Run sandbox tests against sample projects, then promote the connection to production.

Full API access

Authenticated REST endpoints expose the complete PermitSolutions data model — projects, permits, documents, GIS geometry, workflow events, and webhooks. OAuth 2.0 bearer tokens scope access by organization and role.

Method Endpoint Description
GET /api/v1/projects/ List and filter projects · status, program, county, PM assignment
GET /api/v1/projects/{id}/ Full project record · intake, NEPA pathway, permits, documents, GIS layers
POST /api/v1/projects/{id}/status/ Update project workflow stage · intake accepted, action required, authorized
GET /api/v1/permits/ Agency permit queue · filter by agency, status, assignee, deadline
POST /api/v1/permits/{id}/determination/ Submit agency determination · concurrence, authorization, deficiency notice
GET /api/v1/documents/ Document metadata and signed download URLs · intake, NEPA, agency submissions
POST /api/v1/documents/ Upload project or review documents · multipart with metadata schema
GET /api/v1/gis/routes/{id}/ Route geometry · GeoJSON, KML, shapefile bundle
POST /api/v1/webhooks/ Register event subscriptions · status changes, new submittals, determinations
# Example · retrieve project with permits and documents
curl -H "Authorization: Bearer <token>" \
  "https://api.permitsolutions.io/api/v1/projects/PS-24-1204/?include=permits,documents,gis"

{
  "project_id": "PS-24-1204",
  "status": "In Review",
  "nepa_determination": "CatEx",
  "permits": [{ "agency": "USFWS", "status": "In Review" }],
  "documents": [{ "name": "GIS screening report", "url": "https://…" }]
}

Build custom export profiles that pull structured project data into the formats your program and agency partners require — from formatted PDF authorization packages to pivot-ready Excel workbooks and GIS deliverables.

Supported export formats

PDF reports
Formatted NEPA determinations, authorization packages, deficiency notices, and administrative record volumes with agency letterhead and signatures.
Custom Excel
Program-specific workbooks — quarterly SAR templates, permit tracking matrices, funding milestone schedules with formulas and pivot-ready tables.
KML / KMZ
Route geometry and environmental overlay flags for Google Earth, ArcGIS Online, and agency GIS review.
Shapefiles & GeoJSON
Project routes, buffer zones, and layer intersections packaged for desktop GIS and inter-agency spatial exchange.
CSV / JSON
Machine-readable project indexes, permit status feeds, and audit logs for data warehouses and compliance systems.
Word documents
Editable narrative exports — EA sections, consultation letters, and program correspondence from structured field data.

How custom exports work

Step 1
Define an export profile
Name the export, choose source objects (project, permit, route), and select output formats.
Step 2
Configure fields & layout
Pick columns for spreadsheets, map PDF sections to document templates, or set GIS layer inclusion rules.
Step 3
Set triggers
Run on demand, on workflow milestones (authorization, NEPA clearance), or on a recurring schedule.
Step 4
Deliver & audit
Download from the UI, push to SFTP/S3, or POST to a partner webhook — every run logged in the export audit trail.

Example export profiles

Profile
Trigger
Formats
Description
Administrative record · PDF
On project authorization
PDF · ZIP bundle
Compiles intake forms, NEPA memos, agency determinations, and correspondence into a bookmarked PDF volume.
Quarterly SAR · Excel
Scheduled · end of quarter
XLSX · NTIA schema
Pulls project status, miles constructed, and funding draw data into a pre-mapped BEAD reporting workbook.
Route & overlay package · GIS
On demand · per project
KML · GeoJSON · SHP
Exports accepted route geometry plus flagged wetlands, habitat, floodplain, and cultural resource layers.
Agency permit index · CSV
Scheduled · weekly
CSV · JSON
Open permit queue snapshot by agency with status, assignee, deadline, and project cross-reference.