This API provides access to project data.
All requests require an API key passed in the
x-api-key header. API keys can be generated from your account
settings at upp.utah.gov.
curl -H "x-api-key: YOUR_API_KEY" "https://api.upp.utah.gov/beta/projects?pageSize=10"
/beta/projects
Returns a list of projects.
| Parameter | Type | Description |
|---|---|---|
pageSize |
number | Number of results per page (default: 100, max: 10000) |
searchAfter |
string |
Cursor for pagination (from nextSearchAfter in response)
|
{
"total": 1234,
"pageSize": 10000,
"count": 1234,
"nextSearchAfter": null,
"projects": [
{
"id": "abc123",
"name": "Pickleball Courts",
"clientId": "client456",
"clientName": "Salt Lake City",
"clientGroupId": "group789",
"clientGroupName": "R6 Regional Council",
"fundingStatus": "inProgress",
"fundingStatusLabel": "In Progress",
"projectType": "drinkingWater",
"projectTypeLabel": "Drinking Water",
"projectSubType": "treatment",
"projectSubTypeLabel": "Treatment",
"fiscalYear": 2028,
"timeFrame": "medium",
"timeFrameLabel": "Medium-Term",
"priority": 1,
"totalCost": 5000000,
"description": "Upgrade existing treatment facility...",
"county": "Salt Lake",
"city": "Salt Lake City",
"state": "UT",
"zip": "84101",
"locationGeoPoint": { "lat": 40.7608, "lon": -111.8910 },
"fundingSources": [
{
"source": "deq",
"sourceLabel": "DEQ - Department of Environmental Quality",
"amount": 3000000
}
],
"programIds": ["program-id-123"],
"programNames": ["Some Program Name"],
"dateCreated": "2024-01-15T00:00:00.000Z",
"dateModified": "2024-06-20T00:00:00.000Z"
}
]
}
| Field | Description |
|---|---|
fundingStatus |
One of notStarted, inProgress, or
funded. fundingStatusLabel is the
human-readable label (e.g. "Funded").
|
fiscalYear |
The fiscal year (Jul 1 – Jun 30) the project is planned for,
referenced by its end year — e.g. 2028 means Jul 1, 2027
– Jun 30, 2028.
|
timeFrame |
Planning horizon computed from
fiscalYear relative to the current fiscal year — one of
short, medium, nearFuture,
midFuture, distantFuture.
timeFrameLabel is the human-readable label (e.g.
"Medium-Term").
|
For large result sets, use cursor-based pagination. If
nextSearchAfter is not null, pass it as the
searchAfter query parameter to get the next page:
curl -H "x-api-key: YOUR_API_KEY" \
"https://api.upp.utah.gov/beta/projects?pageSize=1000&searchAfter=PREVIOUS_REQUEST_nextSearchAfter"
| Status | Description |
|---|---|
401 |
Missing or invalid API key |
429 |
Rate limit exceeded |
500 |
Server error |
For questions or issues, contact support when logged in to upp.utah.gov.