curl --request GET \
--url https://prod.truv.com/v1/links/{link_id}/benefit_letters/ \
--header 'X-Access-Client-Id: <api-key>' \
--header 'X-Access-Secret: <api-key>'import requests
url = "https://prod.truv.com/v1/links/{link_id}/benefit_letters/"
headers = {
"X-Access-Client-Id": "<api-key>",
"X-Access-Secret": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Access-Client-Id': '<api-key>', 'X-Access-Secret': '<api-key>'}
};
fetch('https://prod.truv.com/v1/links/{link_id}/benefit_letters/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod.truv.com/v1/links/{link_id}/benefit_letters/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Client-Id: <api-key>",
"X-Access-Secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://prod.truv.com/v1/links/{link_id}/benefit_letters/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Client-Id", "<api-key>")
req.Header.Add("X-Access-Secret", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://prod.truv.com/v1/links/{link_id}/benefit_letters/")
.header("X-Access-Client-Id", "<api-key>")
.header("X-Access-Secret", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod.truv.com/v1/links/{link_id}/benefit_letters/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Client-Id"] = '<api-key>'
request["X-Access-Secret"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"id": "24d7e80942ce4ad58a93f70ce4115f5c",
"document_type": "VA_BENEFIT_LETTER",
"file": "https://cdn.truv.com/paystub_sample.pdf",
"md5sum": "24d7e80942ce4ad58a93f70ce4115f5c",
"created_at": "2026-09-02T10:15:30.123456Z",
"updated_at": "2026-09-02T10:15:30.123456Z"
}
]{
"error": {
"code": "authentication_failed",
"message": "No such token"
}
}{
"error": {
"code": "not_authenticated",
"message": "Authentication credentials were not provided."
}
}{
"detail": "Not Found."
}List all benefit letters
The endpoint returns the benefit letters of a link, such as the veteran’s VA Benefit Verification letter. Each item names the letter and links to the file it was read from; retrieve a letter to get the values read from it.
A refresh fetches a new letter, so a link can hold more than one. The list is ordered by the pay date of the statement each letter was fetched with, newest first, so the first item is the most recent letter. Re-reading an older letter does not move it ahead.
document_type says which letter an item is and so which shape its fields take on retrieve. Only VA_BENEFIT_LETTER letters are returned today; SSA_BENEFIT_LETTER is reserved for the Social Security benefit letter.
Returns an empty array when the link has no benefit letter, including for a VA link whose letter has not been parsed yet.
curl --request GET \
--url https://prod.truv.com/v1/links/{link_id}/benefit_letters/ \
--header 'X-Access-Client-Id: <api-key>' \
--header 'X-Access-Secret: <api-key>'import requests
url = "https://prod.truv.com/v1/links/{link_id}/benefit_letters/"
headers = {
"X-Access-Client-Id": "<api-key>",
"X-Access-Secret": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Access-Client-Id': '<api-key>', 'X-Access-Secret': '<api-key>'}
};
fetch('https://prod.truv.com/v1/links/{link_id}/benefit_letters/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod.truv.com/v1/links/{link_id}/benefit_letters/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Client-Id: <api-key>",
"X-Access-Secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://prod.truv.com/v1/links/{link_id}/benefit_letters/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Client-Id", "<api-key>")
req.Header.Add("X-Access-Secret", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://prod.truv.com/v1/links/{link_id}/benefit_letters/")
.header("X-Access-Client-Id", "<api-key>")
.header("X-Access-Secret", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod.truv.com/v1/links/{link_id}/benefit_letters/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Client-Id"] = '<api-key>'
request["X-Access-Secret"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"id": "24d7e80942ce4ad58a93f70ce4115f5c",
"document_type": "VA_BENEFIT_LETTER",
"file": "https://cdn.truv.com/paystub_sample.pdf",
"md5sum": "24d7e80942ce4ad58a93f70ce4115f5c",
"created_at": "2026-09-02T10:15:30.123456Z",
"updated_at": "2026-09-02T10:15:30.123456Z"
}
]{
"error": {
"code": "authentication_failed",
"message": "No such token"
}
}{
"error": {
"code": "not_authenticated",
"message": "Authentication credentials were not provided."
}
}{
"detail": "Not Found."
}Authorizations
Client ID
Client Access Key
Path Parameters
Link ID
Response
Benefit letter ID
"24d7e80942ce4ad58a93f70ce4115f5c"
Benefit letter type. It decides the shape of fields on retrieve. VA_BENEFIT_LETTER is the VA Benefit Verification letter, whose fields are described by VaBenefitLetterFields. SSA_BENEFIT_LETTER is reserved for the Social Security benefit letter; none are returned yet, and its fields will be documented when they are.
VA_BENEFIT_LETTER, SSA_BENEFIT_LETTER "VA_BENEFIT_LETTER"
Link to the file the letter was read from
"https://cdn.truv.com/paystub_sample.pdf"
MD5 checksum of the file
"24d7e80942ce4ad58a93f70ce4115f5c"
Time the letter was first read
"2026-09-02T10:15:30.123456Z"
Time the values read from the letter last changed
"2026-09-02T10:15:30.123456Z"
Was this page helpful?