Get a policy version
GET
/policies/{id}/versions/{versionId}
const url = 'https://api.vendorica.com/v1/policies/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/versions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.vendorica.com/v1/policies/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/versions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'One version, including bodyRichtext — the document itself, as a TipTap JSON node tree rather than HTML or Markdown. That is the stored form, and it is published as-is rather than rendered here: a server-side rendering would be a second answer to what the policy says, and the one a reader compares against the app would be whichever they happened to fetch.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”id
required
string format: uuid
versionId
required
string format: uuid
Responses
Section titled “Responses”Success
Media typeapplication/json
object
success
required
boolean
data
required
object
id
required
string format: uuid
policyId
required
string format: uuid
versionNumber
required
integer
locale
required
string
title
required
string
approvalStatus
required
string
publishedAt
required
string | null format: date-time
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
key
additional properties
timestamp
required
string format: date-time
requestId
string
message
string
Example
{ "success": true, "data": { "id": "03bdc489-6ebc-46d1-8495-dc9629ea39d6", "policyId": "a180a5ff-3a85-4d47-83d8-a20c36071298", "versionNumber": 1, "locale": "string", "title": "string", "approvalStatus": "string", "publishedAt": "2026-08-19T09:41:12.004Z", "createdAt": "2026-08-19T09:41:12.004Z", "updatedAt": "2026-08-19T09:41:12.004Z" }, "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H", "message": "string"}Validation error
Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{ "success": false, "error": "Bad request", "code": "BAD_REQUEST", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}Unauthorized
Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{ "success": false, "error": "Unauthorized", "code": "UNAUTHORIZED", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}Forbidden — missing scope
Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{ "success": false, "error": "Forbidden", "code": "FORBIDDEN", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}Not found
Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{ "success": false, "error": "Resource not found", "code": "NOT_FOUND", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}Rate limit exceeded
Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{ "success": false, "error": "Too many requests", "code": "TOO_MANY_REQUESTS", "timestamp": "2026-08-19T09:41:12.004Z", "requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"}