VA Profile
Last Updated: July 15, 2025
VA Profile (formerly Vet360) provides an all-encompassing profile of a person associated with the VA, providing information such as contact info, health benefits, and military personnel data. The objective is to enable users to retrieve a broad range of information with a single request. For additional information please see the API Documentation or the profile service swagger documentation (you must be on the VA network to access both of those links).
Endpoints
Vets API calls VA Profile through the forward proxy. Throughout the codebase, Vets API uses the Service object pattern to call out to VA Profile via the Faraday gem, an HTTP client library. Faraday allows for various middleware integrations, including betamocks for mockdata–useful for lower environment testing–and breakers, a ruby gem and faraday middleware that implements the circuit breaker pattern. This is a common pattern throughout Vets API and many examples of various service classes can be found within the lib directory.
Bios
Consumers can pass along a bioPath
as part of the request body when calling VA Profile. BIOs act as filters, guiding the VA Profile API to provide only the specific data subset that the consumer requests. For instance, the military info API documentation (must be on the VA network to access) features an interactive playground alongside detailed descriptions of various BIOs and other related details. This is the military_personnel service class to be specific.
The example in the code snippets below shows how the defined bioPath
is passed in as part of the request body on the perform method.
Bio path from lib/va_profile/models/service_history.rb
def self.in_json
{
bios: [
{
bioPath: 'militaryPerson.militaryServiceHistory',
parameters: {
scope: 'all'
}
}
]
}.to_json
end
Request body from /lib/va_profile/military_personnel/service.rb
response = perform(:post, identity_path, VAProfile::Models::ServiceHistory.in_json)
Perform method from lib/va_profile/service.rb
def perform(method, path, body = nil, headers = {})
log_dates(body)
VAProfile::Stats.increment('total_operations')
config.base_request_headers.merge(headers)
super(method, path, body, headers)
end
Available data from VA Profile
Endpoints can be found in the original VCR recordings under the uri
Endpoint Name | |
---|---|
1 | Address Validation |
2 | Communication |
3 | Contact Information |
4 | Demographics |
5 | Military Personnel |
6 | Person |
7 | Reference Data |
8 | Veteran Status |
Caching for VA Profile
A how-to caching guide has been created and can be found here. Several caching base classes already exist, making it possible to integrate with a pre-existing caching solution for VA Profile. If not, the provided instructions guide you through setting up a new service class with caching capabilities.
API documentation
The API documentation can be found at the links below. This requires VA Network access via CAG, GFE, etc.
Depending on your level of access, the docs might not be accessible on the web client aka Azure Virtual Desktop aka AVD, since it’s not fully on the VA Network.
Overall VA Profile documentation
Overall ProfileService API docs
MilitaryPersonnel API docs
Test users
Military information
The following is a list of test users that can be used in conjunction with testing VA Profile military information. Vets API mockdata enhancements are underway to deliver simulated responses for VA Profile, primarily useful for lower environments. Credentials for authentication can be found in the Test User Dashboard (TUD) (SOCKS access required).
Military information test users
Additionally, developers are always encouraged to contribute new mockdata entries as needed.
Contact Information
The VA Profile Contact Information service allows authorized clients to retrieve and update a user’s contact details (such as address, phone, and email) through a standardized API interface. However, the required identifier for retrieving person data via the /GET person
endpoint differs between the Staging and Production environments.
Identifier Requirements
Staging Environment
In the Staging environment, clients may use either of the following to make a successful /GET person
request:
VAProfile ID - preferred
ICN (Integration Control Number) - accepted for testing and development purposes
This flexibility supports easier testing during development and integration efforts.
Production Environment
In the Production environment, only the VAProfile ID is accepted for /GET person
requests.
VAProfile ID - required
ICN - not accepted
Any attempt to use an ICN to retrieve a person record in production will result in a failure. This restriction ensures that all Production-level access strictly references the canonical VAProfile identifier, promoting consistency and reliability across systems.
Environment | Accepted Identifier(s) for | Notes |
---|---|---|
Staging | ✅ VAProfile ID ✅ ICN | ICNs are accepted for development use |
Production | ✅ VAProfile ID ❌ ICN | VAProfile ID is required |
Address Validation
VA Profile Address Validation is a service used by the VA to verify and standardize addresses submitted by users on VA.gov. Its primary goal is to ensure that address data stored in a user’s profile is accurate, complete, and deliverable, minimizing the risk of mail delivery issues and data inconsistencies.
When a user updates their address—whether home or mailing—VA Profile Address Validation is triggered automatically. The service checks the entered address against authoritative postal data and returns a list of suggested addresses, each assigned a confidence score.
The validation key acts as a safeguard, indicating that the user has reviewed the address suggestions and confirmed their selection. This prevents unverified or ambiguous address data from being saved without user confirmation.
This flowchart (sensitive repo access required) outlines the workflow for updating a user’s home and mailing addresses in the VA.gov platform, leveraging Vets-API and VA Profile Address Validation services. The process ensures data accuracy and integrity by requiring validation keys for certain address updates.
If User Selects Suggested Address:
With low confidence score
A new validation key is required
VA Profile Address Validation is called again for validation
Backend request is sent with the new validation key
Address is updated
If the user chooses to also update mailing address:
The new validation key is required.
Backend request is sent with the new validation key.
Mailing address is updated.
With high confidence score
No validation key is sent
Backend request proceeds without it
Address is updated
If the user chooses to also update mailing address:
Backend request is sent without validation key.
Validation key is NOT required.
Mailing address is updated.
If User Selects Address You Entered:
Backend request is sent with the validation key.
Validation key is REQUIRED.
Home address is updated.
If the user chooses to also update mailing address:
Backend request is sent with the same validation key.
Validation key is REQUIRED.
Mailing address is updated.
Address You Entered →VALIDATION KEY REQUIRED
Suggested Address → Low Confidence Score → NEW VALIDATION KEY REQUIRED
Suggested Address → High Confidence Score → No validation key needed.
The same logic applies when updating the mailing address, if the user opts to do so after updating the home address.
AddressValidation V3 – Minimum Confidence Score Requirements
The VA Profile AddressValidation V3 service applies confidence score thresholds to determine whether an address is considered valid. These thresholds vary based on the address type:
Address Type | Minimum Confidence Score | USPS Validation Required |
---|---|---|
Domestic | 80 | Yes |
Military | 80 | Yes (Treated as Domestic) |
International | 70 | No |
Note: Military addresses (e.g., APO, FPO, DPO) are evaluated using the same confidence score threshold as Domestic addresses.
Contacts
Slack channel
#va-profile in OCTO Slack
Help and feedback
Get help from the Platform Support Team in Slack.
Submit a feature idea to the Platform.