Modification trail
Full transaction history for one PIID, oldest action first. Every row is a single FPDS action: base award, exercised options, supplemental agreements, partial terminations, administrative cleanup. Use this to reconstruct what happened on a contract over its life.
There's no date_from/date_to on this endpoint , asking for one PIID's history returns everything we hold for it. The underlying data carries FY2025 onward (October 2024), so a contract whose period of performance started earlier can return a trail that starts mid-sequence (first modification P00026, say, not P00001). The window block discloses that floor.
Parameters
piid(path): Procurement Instrument Identifier.limit: Results per page. Default 100; maximum 100 on the free trial and 1,000 on paid plans. Over the maximum returns402.offset: pagination offset.fields: same options as search.
Response
Returns piid, data (ASC-ordered by action_date then modification_number), pagination, window, and _sources. 404 when no transactions exist for the PIID.
{
"piid": "47QFCA23F0027",
"pagination": {"limit": 3, "offset": 0, "total": 28, "total_is_estimate": false, "has_next": true},
"window": {
"plan_window_days": 1825,
"earliest_searchable": "2024-10-01",
"clamped": true,
"reason": "Default search window is the earliest data we carry. This is a data coverage floor, not a plan limit."
},
"_sources": ["usaspending_fpds"]
}
This PIID's earliest modification on record is P00026, not P00001 , its real history predates our data floor. window.earliest_searchable is the same floor /contracts/search discloses.
Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/contracts/W56JSR23F0062/modifications?limit=500"