We're excited to announce the second-round enhancements to BuildingConnected API has been released which covers quite a few areas: bid leveling (plugs, highlights, and notes), custom other-cost tracking, expanded ACC-linked-project visibility for bid forms, multi-value filtering across bid package resources, and a simplified way to clear a project's linked ACC Docs folder. All changes are backward compatible, so existing integrations continue to work without any required code changes.
The full list of updates is available in the BuildingConnected v2 changelog.
This blog highlights selected key updates
Bid Leveling
The Plugs, highlights, and notes work together to help teams normalize and compare bids line by line. Plugs adjust the value, quantity, or unit cost of a line item for apples-to-apples comparison; highlights flag a line item with a color; and notes attach commentary. All of the sections in Bid Leveling has to be a manual work in UI, This release delivers significant enhancements to features within the Bid Leveling workflow.
Bid Plugs API
Plugs let you record adjusted values, quantities, or unit costs for a specific line item within a bid, associated via bid ID and a line-item fingerprint. Previously, the API could only retrieve Plugs from existing Bid-related Plug data, with no capability to create or edit Plugs. This release adds full CRUD (Create, Read, Update, Delete) support for Plugs.
- GET bids/{bidId}/plugs/{plugId}
- POST bids/{bidId}/plugs
- PATCH bids/{bidId}/plugs/{plugId}
- DELETE bids/{bidId}/plugs
- DELETE bids/{bidId}/plugs/{plugId}
- GET bid-packages/{bidPackageId}/plugs (lists plugs across every bid in a bid package; paginated, default limit of 100 bids, each bid limited to 100 plugs)
Bid Highlights API
Highlights let you flag a line item within a bid with a color, associated via bid ID and a line-item fingerprint.
- GET bids/{bidId}/highlights/{highlightId}
- POST bids/{bidId}/highlights
- PATCH bids/{bidId}/highlights/{highlightId}
- DELETE bids/{bidId}/highlights/{highlightId}
- GET bids/{bidId}/highlights (lists all highlights for a bid; paginated, default limit of 100)
- DELETE bids/{bidId}/highlights
- GET bid-packages/{bidPackageId}/highlights (lists highlights across every bid in a bid package; paginated, default limit of 100 bids, each bid limited to 100 highlights)
Bid Notes API
Notes let you attach commentary to a line item within a bid, associated via bid ID and a line-item fingerprint:
- GET bids/{bidId}/notes (lists all notes for a bid)
- POST bids/{bidId}/notes
- PATCH bids/{bidId}/notes/{noteId}
- DELETE bids/{bidId}/notes/{noteId}
- DELETE bids/{bidId}/notes (deletes all notes for a bid)
- GET bid-packages/{bidPackageId}/notes (lists notes across every bid in a bid package; paginated, default limit of 100 bids, each bid limited to 100 notes)
Bid Leveling Settings API
Control whether plugs and highlights are enabled for a bid package (both are enabled by default):
- GET bid-packages/{bidPackageId}/bid-leveling-settings
- PATCH bid-packages/{bidPackageId}/bid-leveling-settings (set the plugs-enabled state, highlights-enabled state, or both; any setting not specified retains its previous value)
BidPackages
The next additions all center on the bid package. Two of them extend what you can ask bidders: define your own "other cost" questions, then read back each bidder's answers as structured data. The third governs what happens after the bids arrive: opening a sealed bid package once its due date has passed. Together they close out the pre-award loop, so a workflow that previously required a trip to the UI can now run end to end through the API.
Other Cost Questions and API
Not every cost on a bid fits neatly into a bid form line item — general conditions, bonds, taxes, allowances, escalation. The Other Cost Questions API lets a bid package define its own list of "other cost" questions, so those costs arrive as structured, comparable data rather than free text. A bid package can hold up to 200 questions:
- GET bid-packages/{bidPackageId}/other-cost-questions (returns questions as an array, max 200)
- PUT bid-packages/{bidPackageId}/other-cost-questions (upsert: creates the list if none exists, otherwise replaces it in full)
- PATCH bid-packages/{bidPackageId}/other-cost-questions/{questionId} (partially updates a single question)
- DELETE bid-packages/{bidPackageId}/other-cost-questions/{questionId} (also deletes any other-cost responses that reference the question)
Note: The PUT request to other-cost-questions replaces the entire question list rather than appending to it. For example, if a bid package already has 200 questions and you submit a request containing one existing question (referenced by ID, with updated data) and two new questions (without IDs), the resulting list will contain only those three questions because the original 200 are fully replaced. So be careful to design your requests accordingly when you only intend to update a subset of questions.
Other Cost Responses API
Questions are only half the story. The Other Cost Responses API captures what each bidder actually answered, giving you per-bidder cost data you can pull into your own leveling, estimating, or reporting tools:
- GET bid-packages/{bidPackageId}/other-cost-responses
- POST bid-packages/{bidPackageId}/other-cost-responses
- GET bid-packages/{bidPackageId}/other-cost-responses/{otherCostResponseId}
- PATCH bid-packages/{bidPackageId}/other-cost-responses/{otherCostResponseId}
- DELETE bid-packages/{bidPackageId}/other-cost-responses/{otherCostResponseId}
Unsealing API
In addition, the new unseal endpoint gives you programmatic control over that step once a bid package's due date has passed, instead of relying on manual action in the UI.
Unsealing a bid package cannot be undone — once unsealed, a bid package cannot be resealed. The unseal endpoint only applies to bid packages within a project that already has sealed bidding enabled, and only after that bid package's due date has passed.
Others
currentAccDocsFolderIdidentifies the Autodesk Forma Data Management folder linked to a BuildingConnected project, whose files are shared with all bidders. Previously, once this field was set, the only way to clear it was to unlink the project from Forma entirely by settingcurrentAccLinkedProjectIdtonull. you can now clearcurrentAccDocsFolderIddirectly, so a project can exist with no shared folder attached. Note that uploading a file through the UI still auto-creates a linked folder, repopulating the field.
currentAccLinkedProjectIdis now included in Bid Form responses for both bid form resource types. List endpoints also supportfilter[currentAccLinkedProjectId]andincludeExternal, making it easier to find bid forms linked to a specific ACC/Forma project.
filter[projectId]andfilter[bidPackageId]now support comma-separated IDs. you can retrieve data for multiple projects or bid packages in a single request instead of making separate calls.
Documentation
If you have any questions or feedback, please don't hesitate to contact us through our APS support channel