curl --request POST \
--url https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contentType": "application/pdf",
"documentType": "STUDENT_ID",
"fileName": "student-id.pdf",
"storageKey": "benefits/0197f712/student-id.pdf"
}
'import requests
url = "https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents"
payload = {
"contentType": "application/pdf",
"documentType": "STUDENT_ID",
"fileName": "student-id.pdf",
"storageKey": "benefits/0197f712/student-id.pdf"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contentType: 'application/pdf',
documentType: 'STUDENT_ID',
fileName: 'student-id.pdf',
storageKey: 'benefits/0197f712/student-id.pdf'
})
};
fetch('https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents', 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://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'contentType' => 'application/pdf',
'documentType' => 'STUDENT_ID',
'fileName' => 'student-id.pdf',
'storageKey' => 'benefits/0197f712/student-id.pdf'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents"
payload := strings.NewReader("{\n \"contentType\": \"application/pdf\",\n \"documentType\": \"STUDENT_ID\",\n \"fileName\": \"student-id.pdf\",\n \"storageKey\": \"benefits/0197f712/student-id.pdf\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contentType\": \"application/pdf\",\n \"documentType\": \"STUDENT_ID\",\n \"fileName\": \"student-id.pdf\",\n \"storageKey\": \"benefits/0197f712/student-id.pdf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"contentType\": \"application/pdf\",\n \"documentType\": \"STUDENT_ID\",\n \"fileName\": \"student-id.pdf\",\n \"storageKey\": \"benefits/0197f712/student-id.pdf\"\n}"
response = http.request(request)
puts response.read_body{
"benefitDocumentValidationId": "0197f713-cd5f-77d9-b8d5-9751e96f2b39",
"passengerBenefitRequestId": "0197f712-8a7e-7a53-9d28-51f8f3c77d41",
"customerId": "0197a7f6-4d36-7c0a-a7cb-54fcb33a3148",
"documentType": "STUDENT_ID",
"storageKey": "benefits/0197f712/student-id.pdf",
"fileName": "student-id.pdf",
"contentType": "application/pdf",
"status": "PENDING",
"createdAt": "2026-07-04T11:35:00.000Z",
"updatedAt": "2026-07-04T11:55:00.000Z",
"validatedByUserId": null,
"rejectionReason": null,
"createdBy": null,
"updatedBy": null,
"deletedBy": null,
"deletedAt": null,
"expiresAt": null,
"validatedAt": null
}{
"errors": [
{
"message": "required",
"path": "name"
}
],
"message": "Bad Request Error",
"statusCode": 400
}{
"message": "Missing or invalid access token",
"statusCode": 401
}{
"message": "Internal Server Error",
"statusCode": 500
}Add Benefit Document
Adds a benefit document.
curl --request POST \
--url https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contentType": "application/pdf",
"documentType": "STUDENT_ID",
"fileName": "student-id.pdf",
"storageKey": "benefits/0197f712/student-id.pdf"
}
'import requests
url = "https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents"
payload = {
"contentType": "application/pdf",
"documentType": "STUDENT_ID",
"fileName": "student-id.pdf",
"storageKey": "benefits/0197f712/student-id.pdf"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contentType: 'application/pdf',
documentType: 'STUDENT_ID',
fileName: 'student-id.pdf',
storageKey: 'benefits/0197f712/student-id.pdf'
})
};
fetch('https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents', 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://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'contentType' => 'application/pdf',
'documentType' => 'STUDENT_ID',
'fileName' => 'student-id.pdf',
'storageKey' => 'benefits/0197f712/student-id.pdf'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents"
payload := strings.NewReader("{\n \"contentType\": \"application/pdf\",\n \"documentType\": \"STUDENT_ID\",\n \"fileName\": \"student-id.pdf\",\n \"storageKey\": \"benefits/0197f712/student-id.pdf\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contentType\": \"application/pdf\",\n \"documentType\": \"STUDENT_ID\",\n \"fileName\": \"student-id.pdf\",\n \"storageKey\": \"benefits/0197f712/student-id.pdf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/customer/benefits/requests/{passengerBenefitRequestId}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"contentType\": \"application/pdf\",\n \"documentType\": \"STUDENT_ID\",\n \"fileName\": \"student-id.pdf\",\n \"storageKey\": \"benefits/0197f712/student-id.pdf\"\n}"
response = http.request(request)
puts response.read_body{
"benefitDocumentValidationId": "0197f713-cd5f-77d9-b8d5-9751e96f2b39",
"passengerBenefitRequestId": "0197f712-8a7e-7a53-9d28-51f8f3c77d41",
"customerId": "0197a7f6-4d36-7c0a-a7cb-54fcb33a3148",
"documentType": "STUDENT_ID",
"storageKey": "benefits/0197f712/student-id.pdf",
"fileName": "student-id.pdf",
"contentType": "application/pdf",
"status": "PENDING",
"createdAt": "2026-07-04T11:35:00.000Z",
"updatedAt": "2026-07-04T11:55:00.000Z",
"validatedByUserId": null,
"rejectionReason": null,
"createdBy": null,
"updatedBy": null,
"deletedBy": null,
"deletedAt": null,
"expiresAt": null,
"validatedAt": null
}{
"errors": [
{
"message": "required",
"path": "name"
}
],
"message": "Bad Request Error",
"statusCode": 400
}{
"message": "Missing or invalid access token",
"statusCode": 401
}{
"message": "Internal Server Error",
"statusCode": 500
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Benefit request identifier
"0197f712-8a7e-7a53-9d28-51f8f3c77d41"
Query Parameters
Comma-separated list of fields to include in the response. Supports dot notation for nested projection (e.g. id,name,user.email,trips.route.id). Unknown fields are silently dropped.
Body
Response
Created
Benefit document validation
Benefit document validation identifier
"0197f713-cd5f-77d9-b8d5-9751e96f2b39"
Benefit request identifier
"0197f712-8a7e-7a53-9d28-51f8f3c77d41"
Customer identifier
"0197a7f6-4d36-7c0a-a7cb-54fcb33a3148"
Document type
"STUDENT_ID"
Storage object key
"benefits/0197f712/student-id.pdf"
Original file name
"student-id.pdf"
File MIME type
"application/pdf"
Benefit document validation status
PENDING, APPROVED, REJECTED, EXPIRED "PENDING"
Created at
"2026-07-04T11:35:00.000Z"
Updated at
"2026-07-04T11:55:00.000Z"
Validating user identifier
null
Rejection reason
null
Created by
null
Updated by
null
Deleted by
null
Deleted at
null
Expiration date
null
Validated at
null