Document evidence can now be evaluated via API
POST /documents/{documentId}/evaluate requests a Vanta AI evaluation of all files and URLs in a document’s current draft. It returns 202 when the request is accepted, or 204 when a matching successful evaluation already exists. Repeated requests for the same evidence are deduplicated.GET /documents/{documentId}/evaluation returns the evaluation summary for the current draft. It returns 404 until an evaluation outcome is saved, including while an evaluation is running, so poll it with a bounded timeout. Both endpoints return 422 with a message when the evidence can’t be evaluated, for example for sensitive documents.Trust Center videos can now be listed via API
GET /trust-centers/{slugId}/videos lists the videos on a Trust Center in display order. Each video has an id, url, title, and description. To keep a video when you call PUT /trust-centers/{slugId}/videos, send its id from this list. A video sent without an id is added as a new video with a new id.Vendors can now be filtered by website URL
GET /vendors accepts an optional websiteUrl query parameter that filters vendors by website URL using canonical vendor matching. Combine it with name and statusMatchesAny to narrow the results further.Issues add eight source types
TheSourceType enum adds VULNERABILITY_SCANNER, PENETRATION_TEST, SECURITY_ASSESSMENT, BUG_BOUNTY, THREAT_INTELLIGENCE, AUTOMATED_CONTROL_TESTING, MANUAL_ANALYSIS, and SUPPLY_CHAIN_MONITORING. The new values can appear in source.sourceType on issues returned by GET /issues and GET /issues/{issueId}, and you can pass them to the sourceMatchesAny filter on GET /issues.Security training requirements add businessContinuity
TheSecurityTrainingCategory enum adds businessContinuity. It applies to the security training requirement’s requiredCategories and to each training’s category on the task requirement set endpoints and GET /groups/{groupId}/task-requirement-set.Vendor categories can now be managed via API
New endpoints let you read every vendor category and manage your organization’s custom categories:GET /vendor-categorieslists Vanta’s system categories, followed by your custom categories.GET /vendor-categories/{categoryId}gets a system or custom category.POST /vendor-categoriescreates a custom category, up to 100 per organization.labelis required, up to 100 characters, and must be unique ignoring case.descriptionis optional, up to 500 characters.PATCH /vendor-categories/{categoryId}updates a custom category’slabelordescription. System categories can’t be updated.DELETE /vendor-categories/{categoryId}deletes a custom category. The requiredreplacementCategoryIdmoves its vendors to another category, or leaves them uncategorized when it’snull.
id, label, description, and isSystem.Frameworks can now be snoozed and reactivated via API
POST /frameworks/{frameworkId}/snooze snoozes an active framework until snoozedUntilDate, a YYYY-MM-DD date that must be tomorrow or later. Call it again to change the end date of an existing snooze. While a framework is snoozed, its tests and documents are hidden and send no notifications, and its policies are marked inactive. The framework becomes active again at 00:00 UTC on snoozedUntilDate.POST /frameworks/{frameworkId}/reactivate reactivates a snoozed framework right away. Both endpoints return the framework’s frameworkId, status (ACTIVE or SNOOZED), snoozedUntilDate, and hasChanged, which is false only when you reactivate a framework that was already active. Draft and archived frameworks can’t be snoozed or reactivated.Task requirement sets can now be managed via API
New endpoints manage the onboarding and offboarding requirements Vanta applies to your personnel:GET /task-requirement-setslists your task requirement sets. Filter withreusable.POST /task-requirement-setscreates a set and assigns it to a group.name,isReusable, andgroupIdare required.GET /task-requirement-sets/{requirementSetId}gets a set.PATCH /task-requirement-sets/{requirementSetId}/detailsupdates a set’snameordescription.PATCH /task-requirement-sets/{requirementSetId}/requirementsupdates the requirements a set applies. A requirement you send replaces the existing one. Requirements you omit stay as they are.GET /groups/{groupId}/task-requirement-setgets the set applied to a group, or returns204when the group has none.
GET /task-requirement-sets/custom-requirementslists your custom requirements. Filter withrequirementType(ONBOARDINGorOFFBOARDING).POST /task-requirement-sets/custom-requirementscreates a custom onboarding or offboarding requirement.PATCH /task-requirement-sets/custom-requirements/{customRequirementId}partially updates one. The requirement type must match the requirement you update.
Risk scenario mapping endpoints now accept Risk IDs
TheriskScenarioId path parameter on every /risk-scenarios/{riskScenarioId}/mappings/... endpoint now accepts the risk scenario’s Risk ID as well as its object ID. This covers the issue, custom asset, integration, account, vendor finding, and enterprise risk mappings, for example GET /risk-scenarios/{riskScenarioId}/mappings/issues.Vendor assessments now include audience
Vendor assessments and assessment types now returnaudience, which says who fills out the assessment. EXTERNAL means the vendor fills it out. INTERNAL means your organization’s own employees fill it out.The field is on GET /vendors/{vendorId}/assessments, GET /vendors/{vendorId}/assessments/{assessmentId}, GET /vendor-assessment-types, and GET /vendor-assessment-types/{assessmentTypeId}.Customer Trust accounts now include custom revenue metrics
Customer Trust account responses, such asGET /customer-trust/accounts, now include customRevenueMetrics. Each metric has a metricId, displayName, fieldName, syncedAmount, overrideAmount, and currency. When overrideAmount is set, it takes precedence over syncedAmount. The list is empty when no metrics are configured.Policy documents add Greek
Thelanguage of a policy document returned by GET /policies and GET /policies/{policyId} can now be EL (Greek).Audit controls can now be filtered by segment
GET /audits/{auditId}/controls adds a segmentIdsMatchesAny query parameter. It returns only controls whose inScopeSegmentIds include at least one of the given segment IDs from the audit’s segments[].id. Repeat the parameter for several IDs, and send the same filters with every pageCursor.The Auditor API is available to Audit Partner accounts during an active audit engagement.Information request evidence now includes capturedSegmentIds
GET /audits/{auditId}/information-requests/{requestId}/evidence and GET /audits/{auditId}/information-requests/{requestId}/evidence/{evidenceId} now return capturedSegmentIds, the IDs of the audit segments the evidence was relevant to when it was captured. It’s empty for uploaded, link, and observation evidence, and for evidence captured before Vanta recorded this attribution.The Auditor API is available to Audit Partner accounts during an active audit engagement.Information request evidence now documents how to identify evidence and files
GET /audits/{auditId}/information-requests/{requestId}/evidence now documents how to key evidence when you sync it. Use id as the key for every evidence item. A file attached to two information requests appears as two evidence items with different IDs.To recognize the same file across information requests, use the file key for the evidence type. UPLOADED_DOCUMENT uses evidence.id. VANTA_DOCUMENT and VANTA_POLICY use evidence.file.id. VANTA_TEST uses evidence.snapshotId plus evidence.fileType, because each file in a test snapshot is a separate evidence item. LINK, OBSERVATION, and VANTA_TEST_SNAPSHOT evidence has no file. Don’t use file.url as a key, because it’s a temporary download link.The Auditor API is available to Audit Partner accounts during an active audit engagement.Vendors now use categoryId, and category is deprecated
Vendors returned byGET /vendors and GET /vendors/{vendorId} now include categoryId, the ID of the vendor’s category, or null. Use GET /vendor-categories to look up category IDs.POST /vendors and PATCH /vendors/{vendorId} accept categoryId. On create, pass null for no category, or omit it to let Vanta pick one. On update, pass null to clear the category, or omit it to keep it. You can’t send categoryId and category in the same request. The category field on vendors and on these requests is deprecated. Use categoryId instead.Audit vendors now return category IDs, and category labels are deprecated
GET /audits/{auditId}/vendors now returns categoryId, and its category field is deprecated. GET /audits/{auditId}/managed-vendors now returns vendorCategoryId, and its vendorCategory field is deprecated. Both new fields hold the ID of the vendor’s category, or null.The Auditor API is available to Audit Partner accounts during an active audit engagement.Framework controls can now be exported to CSV
POST /frameworks/exports starts a controls CSV export for a framework enabled in your organization. It takes a frameworkId and an optional includeEvidenceStatus, and returns 202 with an exportId and a status of RUNNING.GET /frameworks/exports/{exportId} returns the export’s status: RUNNING, COMPLETED, or FAILED. A completed export includes a downloadUrl that’s valid for one hour. Call the endpoint again to get a fresh link. If an export fails, create a new one to retry.Framework control sets can now be set via API
A newPUT /frameworks/{frameworkId}/variants endpoint replaces all selected control sets for an enabled, customer-selectable framework. Send the complete selection in variantIds. An empty selection is rejected. The response returns the saved frameworkId and variantIds.List frameworks can now return the full Vanta catalog
GET /frameworks adds two query parameters:purchasedOnlydefaults totrue. Set it tofalseto list every available framework, not only those in your program.includeProgressdefaults totrue. When it’sfalse, the progress counts are-1. Counts are also-1for frameworks that aren’t in your program.
isPurchased. Frameworks returned by GET /frameworks and GET /frameworks/{frameworkId} also include activeVariants, the assessment tiers your program is on (such as HITRUST i1), each with an id and label.Framework details can now include requirements
SetincludeRequirements=true on GET /frameworks/{frameworkId} to get a requirements object. Each item has an id, name, shorthand, description, parentRequirementId, category, and controlIds.requirementsScope chooses which requirements you get. MY_PROGRAM (the default) returns requirements as mapped in your program. CATALOG returns the framework’s published requirements, resolved against the catalog variant IDs in variants. Custom frameworks always use MY_PROGRAM. Both scopes require the framework to be in your program.Vendors now include engagements and parent vendor
Vendor objects now includeengagements, the child vendors managed as engagements of this vendor (sorted by name, up to 100). They also include parentVendor, which is null when there’s no accessible parent. Each entry has an id, name, status, and nullable websiteUrl. GET /vendors/{vendorId} returns these summaries when vendor engagements are enabled.Trust Center videos now keep their IDs
PUT /trust-centers/{slugId}/videos now returns an id for each video. To keep an existing video, send its id back with the item. Omit id to add a new video. An id that doesn’t match one of the Trust Center’s videos returns 404.Audit vendors now include engagements and parent vendor
Vendors returned byGET /audits/{auditId}/vendors now include engagements (up to 100) and a nullable parentVendor. Each entry has an id, name, status, and nullable websiteUrl. This endpoint is available to Audit Partner accounts during an active audit engagement.Discovered vendors now include Torii and Office GCC High sources
GET /discovered-vendors now returns vendors discovered by Torii and Office GCC High instead of failing with a 500. The source enum adds TORII and OFFICE_GCC_HIGH.vendorCategories on vendor risk attributes is deprecated
GET /vendor-risk-attributes now returns vendorCategoryIds, the system and custom category IDs each risk attribute applies to. The legacy vendorCategories display labels are deprecated. Use vendorCategoryIds instead.Custom frameworks can now be deleted
A newDELETE /frameworks/{frameworkId} endpoint deletes a custom framework and its requirements and control mappings. Controls, evidence, and mappings to other frameworks remain. You can’t delete built-in frameworks or a framework that has an associated audit.Custom assets can now be listed via API
A newGET /custom-assets endpoint lists your custom inventory assets, newest first, excluding deleted assets. Each asset has an id and a nullable name and description.Risk scenarios can now be mapped to issues, custom assets, integrations, and accounts
New endpoints under/risk-scenarios/{riskScenarioId}/mappings list, link, and unlink a risk scenario’s mappings. Each request body accepts up to 100 items.- Issues: list, add via
issueIdsToLink, and remove viaissueIdsToUnlinkon/mappings/issues. - Custom assets: list, add via
customAssetIdsToLink, and remove viacustomAssetIdsToUnlinkon/mappings/custom-assets. - Integrations: list, add via
integrationIdsToAdd, and remove viaintegrationIdsToRemoveon/mappings/integrations. Linking an integration includes all of its accounts. - Accounts: list, add via
accountsToLink, and remove viaaccountsToUnlinkon/mappings/accounts. Each account is identified byserviceId,accountId, and an optionalsubunitId.
Answer Library entries now include createdAt
Answer Library entries returned byGET /knowledge-base/answer-library, GET /knowledge-base/answer-library/{id}, and the create, update, and verify endpoints now include createdAt.Audits now report their audit view
Audit objects onGET /audits and GET /audits/{auditId} now include auditView: FULL (Full Audit View) or CONTROLLED (Controlled Audit View). It tells you how much population data you can see in the audit.Audit population endpoints support multi-program audits and return segmentIds
GET /audits/{auditId}/personnel/account-access/services, GET /audits/{auditId}/personnel/account-access/{serviceId}, and GET /audits/{auditId}/assets/code-changes no longer return 422 for audits with more than one program segment. On a multi-framework audit, each record in scope for any of the audit’s frameworks is returned once. Audits with system segments aren’t supported on population endpoints.Records from the people, groups, account access, integrations, managed vendors, and code changes population endpoints now include segmentIds, the audit segments the record is in scope for. The field is omitted when segment scoping is disabled. These endpoints are available to Audit Partner accounts during an active audit engagement.Audit population endpoints now document their 403 responses
The population endpoint references now explain both causes of a403. These endpoints serve only Controlled Audit View (CAV) audits and reject Full Audit View audits. They also return 403 when the customer hasn’t made that population page visible to auditors. GET /audits/{auditId}/risks/{snapshotId} also returns 403 for a snapshot that isn’t shared with auditors and 404 for one that doesn’t exist. Use GET /audits/{auditId}/risks/snapshots to list shared snapshots.Questionnaire status webhook lists more statuses
The questionnairestatus enum on v1.questionnaire.status-changed adds QUEUED_FOR_SECTION_EXTRACTION, EXTRACTING_SECTIONS, MAPPING_SECTIONS, QUEUED_FOR_ANSWERING, and GENERATING_ANSWERS.changedSinceDate on GET /audits now documents soft-deleted audits
GET /audits with changedSinceDate returns soft-deleted audits whose deletionDate is on or after that timestamp. Check deletionDate on each audit so an incremental sync can remove audits that were deleted since your last run.Business units and program scopes are now available via API
GET /business-units and GET /business-units/{businessUnitId} list and retrieve your business units. They return 403 when business unit scoping is disabled.GET /program-scopes and GET /program-scopes/{programScopeId} list and retrieve program scopes. A program scope pairs a businessUnitId with a frameworkId. Filter the list with businessUnitIdMatchesAny and frameworkIdMatchesAny.Groups can now be updated and deleted
PATCH /groups/{groupId} updates a group’s name, description, or pointOfContactEmail. Pass null to clear description or pointOfContactEmail. DELETE /groups/{groupId} deletes a group. You can’t delete the default group, and groups created in Vanta must have no assigned people.Look up the organization behind your token
A newGET /organization endpoint returns the id, displayName, and region of the organization your token is connected to.Personnel notification settings can now be managed via API
GET /personnel-notification-settings returns your personnel reminder and employee-digest settings. PATCH /personnel-notification-settings updates them. Omitted fields stay unchanged.Risk scenarios can now be mapped to vendor findings
GET /risk-scenarios/{riskScenarioId}/mappings/vendor-findingslists mapped vendor finding IDs.POST /risk-scenarios/{riskScenarioId}/mappings/vendor-findingslinks findings viavendorFindingIdsToLink.DELETE /risk-scenarios/{riskScenarioId}/mappings/vendor-findingsunlinks findings viavendorFindingIdsToUnlink.GET /risk-scenarios/{riskScenarioId}/mappings/enterprise-riskreturns the enterprise risk a scenario is linked to, if any.
People can now be filtered by framework, program scope, and business unit
GET /people adds the frameworkIdMatchesAny, programScopeIdMatchesAny, and businessUnitIdMatchesAny filters. Person objects now include programScopeIds.Frameworks now include a lifecycle status
GET /frameworks and GET /frameworks/{frameworkId} now return a nullable status: ACTIVE, DRAFT, SNOOZED, ARCHIVED, or NEW_UPGRADE. Set the new includeStatus query parameter to false to omit it. It defaults to true.Controls now support implementation details
Control responses, includingGET /controls and GET /controls/{controlId}, now include a nullable implementationDetails field. PATCH /controls/{controlId} accepts implementationDetails.Deactivated controls now include frameworks and deactivation reason
GET /controls/deactivated-controls now returns frameworks (with id, displayName, shorthandName, and sections), a nullable deactivationReason, and implementationDetails for each control.Vendor assessments now include questionnaire question counts
GET /vendors/{vendorId}/assessments now returns a nullable questionnaire object. Its questionCounts include all, needsReview, notAnswered, and flaggedByAI.Vendor risk attributes now include their risk section
GET /vendor-risk-attributes now returns a riskSection object (id and name) for each attribute.Risk scenarios now include a score breakdown
Risk scenario responses, includingGET /risk-scenarios and GET /risk-scenarios/{riskScenarioId}, now include a nullable scoreBreakdown array. Each entry has a kind (SCORE, DIMENSION, or FACTOR), a status (SCORED, MISSING, or NOT_APPLICABLE), score, scoreLabel, and parentId. It’s null when Flexible Risk Scoring is off.Trust Center updates: section visibility, denial emails, and new frameworks
GET /trust-centers/{slugId}/compliance-frameworksnow returnsisSectionVisiblealongsideresults.POST /trust-centers/{slugId}/access-requests/{accessRequestId}/denyaccepts an optionalsendEmailflag to notify the requester. It defaults tofalse.- The
standardenum for creating and updating Trust Center compliance frameworks addsaiuc1_26q3,atc, andfedramp20x_classA.
Questionnaire status adds queued states
TheQuestionnaireStatus enum on GET /customer-trust/questionnaires adds QUEUED_FOR_SECTION_EXTRACTION and QUEUED_FOR_ANSWERING.Legacy answer field removed from questionnaire responses
Questionnaire responses, such as GET /customer-trust/questionnaires/{questionnaireId}/responses, no longer return the deprecated answer field. Use answerPartsSchema and answerPartsValues instead.status on vendor updates is deprecated
The status field on PATCH /vendors/{vendorId} is deprecated and ignored. Use POST /vendors/{vendorId}/set-status to change vendor status.Audits now expose their scope as segments
Audit objects onGET /audits and GET /audits/{auditId} now include a segments array. Each segment has a kind (PROGRAM or SYSTEM), displayName, framework, and nullable businessUnit, system, and soc2Deliverable (with reportType and tscs). The top-level framework field is deprecated. Use segments instead.Audit controls and assessments are now segment-aware
GET /audits/{auditId}/controlsnow returnsinScopeSegmentIds, and each entry inassessmentsincludessegmentId. The control’sframeworkfield is deprecated.PUT /audits/{auditId}/controls/{controlId}/assessmentacceptssegmentIdand returns it. You can omit it only when the audit has exactly one segment.
Information requests add linkedControlIds and segment assignment
- Information requests now return
linkedControlIds, the complete current set of linked controls, andsegmentIds, the audit segments the request is assigned to. PATCH /audits/{auditId}/information-requests/{requestId}acceptslinkedControlIdsto replace the linked set.GET /audits/{auditId}/information-requestsadds asegmentIdsMatchesAnyfilter.additionalControlIdsandframeworkCodesare deprecated on information requests.frameworkCodesis always empty on read.
Framework codes are now grouped by framework
GET /audits/{auditId}/framework-codes now returns codesByFramework, with valid codes grouped by each in-scope framework. The flat frameworkCodes field is deprecated.fillOutcome on information request activity is deprecated
The fillOutcome field on GET /audits/{auditId}/information-requests/{requestId}/activity is deprecated and always null.More resource fields now accept null
Several fields on Integrations API resource types now accept null on PUT and may return null on GET. Affected resources include user_account (for example mfaEnabled and lastLoginTimestamp), macos_user_computer, windows_user_computer, secret, security_task, background_check_connector, user_security_training_status, and the package, static analysis, and API endpoint vulnerability connectors.Questionnaire responses are now available via API
Four new endpoints manage the responses on a Customer Trust questionnaire.GET /customer-trust/questionnaires/{questionnaireId}/responses lists responses, and GET /customer-trust/questionnaires/{questionnaireId}/responses/{responseId} retrieves one. PATCH /customer-trust/questionnaires/{questionnaireId}/responses/{responseId} updates answer content, and PATCH /customer-trust/questionnaires/{questionnaireId}/responses/{responseId}/owner reassigns or clears the response owner. Each response carries answerPartsSchema and answerPartsValues; the legacy answer field is deprecated.Groups can now be created and imported from your IdP
A newPOST /groups endpoint creates a group. GET /groups/importable-idp-groups lists identity provider groups available to import, and POST /groups/import-from-idp imports them, returning a per-group success or error result.Tag categories can now be enabled per product context
A newPOST /customer-trust/tag-categories/{tagCategoryId}/product-contexts endpoint enables a tag category for a product context, such as document sharing or control sharing. DELETE /customer-trust/tag-categories/{tagCategoryId}/product-contexts/{productContextId} disables it. Both operations are idempotent.Information request evidence can now be fetched by ID
A newGET /audits/{auditId}/information-requests/{requestId}/evidence/{evidenceId} endpoint retrieves a single evidence item attached to an information request. Soft-deleted evidence stays fetchable; check deletionDate to identify deleted records.Group responses now include description, source, and point of contact
Group objects onGET /groups and GET /groups/{groupId} now include description, source, personnelCount, and pointOfContact (with email and displayName).Questionnaire status adds section and answer-generation states
TheQuestionnaireStatus enum on GET /customer-trust/questionnaires adds EXTRACTING_SECTIONS, MAPPING_SECTIONS, and GENERATING_ANSWERS.Issue actors can now be applications
TheActorType enum on GET /issues responses adds APPLICATION alongside USER and WORKFLOW_GENERATED, so issue history can attribute actions to an API client.Trust Center compliance frameworks support TISAX 2027
Thestandard enum on Create Trust Center compliance framework and Update Trust Center compliance framework adds tisax2027.Document and Trust Center media downloads support YAML
GET /documents/{documentId}/uploads/{uploadedFileId}/media and GET /trust-centers/{slugId}/resources/{resourceId}/media now declare application/yaml and text/x-yaml response content types for YAML files.Issue snapshots now expose approval progress
OnGET /audits/{auditId}/issues/items, snapshotted issues now include a nullable approvalProgress object with approvedCount and totalApprovers, and the snapshot status enum adds PENDING_REVIEW.Rate limits raised on several Auditor API endpoints
Rate limits increased from 10 to 50 requests per minute on Update audit evidence, Get framework codes for an audit, Delete an information request for an audit, and Share information request list with customer. Limits increased from 10 to 25 requests per minute on Create a comment for audit evidence, Update a comment for an information request, and Delete a comment for an information request. On the Manage Vanta API,POST /contracts now documents a limit of 10 requests per minute.Vendor assessment types are now available via API
NewGET /vendor-assessment-types and GET /vendor-assessment-types/{assessmentTypeId} endpoints list and retrieve vendor assessment types, filterable by status (ACTIVE or ARCHIVED). See the Vendor Assessment Types reference.Auditors can now record control assessments via API
A newPUT /audits/{auditId}/controls/{controlId}/assessment endpoint records an auditor’s assessment and justification for a control within an IRL audit. See the Upsert a control’s assessment within an audit reference.Audit evidence items and comments can now be fetched by ID
Three new endpoints get a single record by ID:GET /audits/{auditId}/evidence/{auditEvidenceId} for an audit evidence item, GET /audits/{auditId}/evidence/{auditEvidenceId}/comments/{commentId} for an evidence comment, and GET /audits/{auditId}/information-requests/{requestId}/comments/{commentId} for an information-request comment.New webhooks fire when audit evidence enters or leaves scope
v1.evidence.created fires when an evidence item comes into scope for an audit, and v1.evidence.deleted fires when an evidence item leaves scope (soft-deleted).v1.evidence.status-changed can now fire with unchanged status
v1.evidence.status-changed can now fire with oldStatus equal to newStatus.Trust Center responses now expose control status visibility settings
TrustCenter responses now include a new controlVisibilityMode field, and TrustCenterControlCategory responses include new visibility and statusVisibilityOverride fields. The Update Trust Center control category endpoint accepts both new fields.Customer Trust tag category filter now supports CONTROL_SHARING
GET /customer-trust/tag-categories now accepts CONTROL_SHARING in the productContextIdsMatchesAny query filter.assessments array only includes in-scope segments
On GET /audits/{auditId}/controls, the assessments array now contributes an entry only for segments the control is in scope for.IRL audits can now be duplicated into a new engagement
A newPOST /audits/duplicate endpoint copies an existing IRL audit, including its information requests, into a new engagement with new dates and auditor roster.Audit controls now include per-segment assessments
GET /audits/{auditId}/controls now returns an assessments array with the auditor’s assessmentState and justification for each audit segment.Framework enums now include NIST 800-171 R3 and BSI C5
The Manage Vanta API and Auditor APIFramework enum adds NIST_171_R3, and the Manage Vanta API FrameworkKey enum adds nist171r3 and bsic5. See the Frameworks reference and Audits API reference.Contracts now support an externalId for idempotent uploads
POST /customer-trust/contracts now accepts and returns an optional externalId. Repeat uploads with the same externalId return 409.Trust Center viewer NDA response no longer includes DocuSign webhookId
The ndaInfo.docuSign.webhookId field has been removed from Trust Center viewer responses. envelopeId, accountId, and accountBaseUrl still identify the DocuSign envelope.Vendor assessments API is now GA
GET /v1/vendors/{vendorId}/assessments and GET /v1/vendors/{vendorId}/assessments/{assessmentId} are now generally available and include the assessment-level owner field.Deactivated controls can now be listed via API
A newGET /v1/controls/deactivated-controls endpoint returns paginated deactivated controls. GET /v1/controls/controls-library will be deprecated in a future release.Trust Center compliance frameworks can now be managed via API
New endpoints list, create, update, and delete Trust Center compliance frameworks, and upload a framework badge image. See the Trust Center compliance frameworks reference.Vanta issues are now available via API
GET /issues lists issues, and GET /issues/{issueId} returns a single issue.Webhooks now include a Control domain for audit comment events
Webhook events now include a Control domain covering audit control comment events, delivered only to Audit Partner accounts during an active audit engagement. See the Webhooks overview.Audit integrations and organization details are now available via API
Three new read endpoints give auditors more context during an engagement:GET /audits/{auditId}/integrations, GET /audits/{auditId}/organization/information, and GET /audits/{auditId}/organization/notifications. Available only to Audit Partner accounts during an active audit engagement.Information request history now tracks audit duplication
Information request history activities now include two new fields:sourceInformationRequestId (the request this one was copied from) and sourceAuditId (the audit it was duplicated from). Both are populated only for audit-duplication activities and null otherwise. See the Audits API reference.Event log reference now includes new action types
The event log reference addsUNDELETE_PROGRAM_SEGMENT and REMOVE_DATA_SUBJECT_REQUEST_RELATIONSHIP_OPTION to the list of action types. PROVIDE_JUSTIFICATION_FOR_AUDIT_CONTROL_ASSESSMENT was removed.Issue sort field values changed to camelCase
IssueSortField enum values on the Issues endpoints changed from DUE_DATE, CREATED_AT, DETECTED_AT, LAST_MODIFIED_AT, STATUS, SEVERITY to dueDate, createdDate, detectedDate, lastModifiedDate, status, severity. Update any clients that hardcoded the old values.Risk scenario controls can now be managed via API
New endpoints link and manage controls on a risk scenario:GET /risk-scenarios/{riskScenarioId}/controls lists a scenario’s controls, POST /risk-scenarios/{riskScenarioId}/controls adds a control, PATCH /risk-scenarios/{riskScenarioId}/controls/{controlId} changes a control’s controlType, and DELETE /risk-scenarios/{riskScenarioId}/controls/{controlId} removes a control.Trust Center resources can now be organized into categories
New endpoints list, add, reorder, update, and delete Trust Center resource categories. See the Trust Center resource categories reference.Test snapshot evidence now includes more detail
The test-snapshot evidence detail endpoint now returns two new fields.apiRequests lists HTTP requests captured during API introspection tests. outOfScopeResources lists resources excluded at the test level (customer-disabled) and the framework level (segment configuration).Event log reference now includes more actions and targets
The event log reference now lists new action types covering Trust Center FAQ and resource categories, program segments, risk register updates, subscription renewals, in-app purchases, and Trust Center viewer reminders. It also adds three new target types:TRUST_CENTER_FAQ_CATEGORY, TRUST_CENTER_RESOURCE_CATEGORY, and QUESTIONNAIRE_AUTOMATION.Legacy Auditor API list endpoints are now deprecated
GET /audits/{auditId}/monitored-computers, GET /audits/{auditId}/people, GET /audits/{auditId}/vendors, GET /audits/{auditId}/vulnerabilities, GET /audits/{auditId}/vulnerability-remediations, and GET /audits/{auditId}/vulnerable-assets are deprecated and work for legacy audits only, not controlled audit view. Controlled audit view uses personnel/people, personnel/computers, and managed-vendors instead.Auditors can now access code changes via API
A newGET /audits/{auditId}/assets/code-changes endpoint returns the pull requests visible to auditors during an audit engagement. Each record includes the PR title, identifier, repository, source (GitHub, GitLab, Bitbucket, or Azure DevOps), and opened/closed dates. Supports search, source filtering, date-range filtering, and cursor pagination.Vanta event logs are now available via API
A newGET /event-logs endpoint lists audit events from your Vanta account, including the actor, date, and event type.