veeva Documents API

Document lifecycle management

Operations 7

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /objects/documents List documents I can access in Vault · Veeva List All Documents #
Ask an LLM
“Which documents in Veeva Vault can I see?”
“Can I sort and page through the full document list?”
Tell an agent
List all the documents I have access to in Vault.
List {limit} documents sorted by {sort}.
POST /objects/documents Create a new document in Vault · Veeva Create a Document #
Ask an LLM
“How do I create a new document record and upload its source file at the same time?”
“What do I need to supply to create a document, like its type and lifecycle?”
Tell an agent
Create a document named {name__v} of type {type__v} on lifecycle {lifecycle__v}.
Upload {file} as a new {type__v} document called {name__v} using lifecycle {lifecycle__v}.
GET /objects/documents/{documentId} Get a document's metadata · Veeva Retrieve a Document #
Ask an LLM
“How do I see the properties and metadata of one Vault document?”
“What lifecycle state and field values does a specific document have?”
Tell an agent
Get the metadata for document {documentId}.
Show me the properties of Vault document {documentId}.
PUT /objects/documents/{documentId} Update a document's field values · Veeva Update Document Metadata #
Ask an LLM
“How do I change the metadata fields on a document without replacing its file?”
“Can I edit a document's properties after it has been created?”
Tell an agent
Update the field values on document {documentId}.
Edit the metadata of document {documentId} but keep its file as is.
DELETE /objects/documents/{documentId} Delete a document and all its versions · Veeva Delete a Document #
Ask an LLM
“How do I permanently delete a document from Vault?”
“Does deleting a document also remove all of its versions?”
Tell an agent destructive · confirm first
Delete document {documentId} and every version of it.
Remove Vault document {documentId}.
GET /objects/documents/{documentId}/file Download a document's source file · Veeva Download Document Source File #
Ask an LLM
“How do I download the actual file behind a Vault document?”
“Can I get the source file for the latest version of a document?”
Tell an agent
Download the source file for document {documentId}.
Fetch the latest version's file of document {documentId}.
POST /objects/documents/{documentId}/actions/{actionName} Run a lifecycle action on a document · Veeva Perform a Document Lifecycle Action #
Ask an LLM
“How do I approve a document so it changes lifecycle state?”
“Can I execute a user action like Send to Archive on a document?”
Tell an agent
Run lifecycle action {actionName} on document {documentId}.
Change the state of document {documentId} by executing the {actionName} user action.

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-auth-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-document-fields-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-document-list-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-document-create-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-document-update-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-document-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-object-list-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-object-create-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-object-record-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-query-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-schema/veeva-vault-user-list-response-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-structure/veeva-vault-auth-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-structure/veeva-vault-document-fields-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-structure/veeva-vault-document-list-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/veeva/refs/heads/main/json-structure/veeva-vault-query-response-structure.json

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/veeva:veeva-documents-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

veeva-documents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Veeva Vault REST Documents API
  description: Veeva Vault provides life sciences cloud platform APIs for regulatory document management, quality management (QMS), clinical operations, and commercial content management. REST APIs enable document lifecycle management, workflow automation, object CRUD operations, and compliance-validated data exchange. API version v25.3.
  version: '25.3'
  contact:
    name: Veeva Developer Support
    url: https://developer.veevavault.com/
  license:
    name: Veeva Vault Terms of Service
    url: https://www.veeva.com/legal/
servers:
- url: https://{vaultDomain}/api/v25.3
  description: Veeva Vault API
  variables:
    vaultDomain:
      description: Your Vault domain (e.g., myvault.veevavault.com)
      default: myvault.veevavault.com
security:
- VaultSession: []
tags:
- name: Documents
  description: Document lifecycle management
paths:
  /objects/documents:
    get:
      operationId: listDocuments
      summary: Veeva List All Documents
      description: Returns a list of all documents accessible to the authenticated user. Supports filtering by document type, lifecycle state, and custom fields.
      tags:
      - Documents
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
          default: 200
          maximum: 1000
      - name: offset
        in: query
        schema:
          type: integer
          default: 0
      - name: sort
        in: query
        schema:
          type: string
          example: name__v asc
      responses:
        '200':
          description: Document list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentListResponse'
              examples:
                ListDocuments200Example:
                  summary: Default listDocuments 200 response
                  x-microcks-default: true
                  value:
                    responseStatus: SUCCESS
                    documents:
                    - document:
                        id: 100001
                        name__v: Study Protocol v1.0
                        type__v: study_protocol__c
                        lifecycle__v: general_lifecycle__c
                        status__v: approved__c
                        major_version_number__v: 1
                        minor_version_number__v: 0
                    size: 1
                    start: 0
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createDocument
      summary: Veeva Create a Document
      description: Creates a new document record in Vault. Optionally uploads a file as the document source file in the same request using multipart/form-data.
      tags:
      - Documents
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - name__v
              - type__v
              - lifecycle__v
              properties:
                name__v:
                  type: string
                  description: Document name
                type__v:
                  type: string
                  description: Document type API name
                  example: study_protocol__c
                lifecycle__v:
                  type: string
                  description: Document lifecycle API name
                  example: general_lifecycle__c
                status__v:
                  type: string
                  description: Initial lifecycle state
                  example: draft__v
                file:
                  type: string
                  format: binary
                  description: Source file (optional)
                description__v:
                  type: string
                study__v:
                  type: string
                  description: Study object reference
            examples:
              CreateDocumentRequestExample:
                summary: Default createDocument request
                x-microcks-default: true
                value:
                  name__v: Study Protocol Amendment 1
                  type__v: study_protocol__c
                  lifecycle__v: general_lifecycle__c
                  status__v: draft__v
                  description__v: Protocol amendment for Phase 2 study
      responses:
        '200':
          description: Document created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentCreateResponse'
              examples:
                CreateDocument200Example:
                  summary: Default createDocument 200 response
                  x-microcks-default: true
                  value:
                    responseStatus: SUCCESS
                    id: 100002
                    external_id__v: PROT-2025-001
                    major_version_number__v: 0
                    minor_version_number__v: 1
        '400':
          description: Validation error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /objects/documents/{documentId}:
    get:
      operationId: getDocument
      summary: Veeva Retrieve a Document
      description: Returns metadata and properties for a specific document.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      responses:
        '200':
          description: Document metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentResponse'
              examples:
                GetDocument200Example:
                  summary: Default getDocument 200 response
                  x-microcks-default: true
                  value:
                    responseStatus: SUCCESS
                    document:
                      id: 100001
                      name__v: Study Protocol v1.0
                      type__v: study_protocol__c
                      lifecycle__v: general_lifecycle__c
                      status__v: approved__c
                      major_version_number__v: 1
                      minor_version_number__v: 0
                      created_by__v: 12345
                      created_date__v: '2025-03-15T10:30:00Z'
                    versions:
                    - number: '1.0'
                      value: https://myvault.veevavault.com/api/v25.3/objects/documents/100001/versions/1/0
        '404':
          description: Document not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: updateDocument
      summary: Veeva Update Document Metadata
      description: Updates document field values. Does not replace the document file.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              additionalProperties:
                type: string
              description: Document field name-value pairs
            examples:
              UpdateDocumentRequestExample:
                summary: Default updateDocument request
                x-microcks-default: true
                value:
                  description__v: Updated protocol description
                  status__v: approved__c
      responses:
        '200':
          description: Document updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentUpdateResponse'
              examples:
                UpdateDocument200Example:
                  summary: Default updateDocument 200 response
                  x-microcks-default: true
                  value:
                    responseStatus: SUCCESS
                    id: 100001
                    major_version_number__v: 1
                    minor_version_number__v: 1
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteDocument
      summary: Veeva Delete a Document
      description: Deletes a document and all versions.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      responses:
        '200':
          description: Document deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultResponse'
              examples:
                DeleteDocument200Example:
                  summary: Default deleteDocument 200 response
                  x-microcks-default: true
                  value:
                    responseStatus: SUCCESS
                    id: 100001
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /objects/documents/{documentId}/file:
    get:
      operationId: downloadDocumentFile
      summary: Veeva Download Document Source File
      description: Downloads the source file for the latest version of a document.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      responses:
        '200':
          description: Document file binary
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /objects/documents/{documentId}/actions/{actionName}:
    post:
      operationId: performDocumentAction
      summary: Veeva Perform a Document Lifecycle Action
      description: Executes a user action on a document to change its lifecycle state. Common actions include Approve, Submit for Review, Send to Archive.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      - name: actionName
        in: path
        required: true
        description: Lifecycle action API name
        schema:
          type: string
        example: Approve
      responses:
        '200':
          description: Action performed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultResponse'
              examples:
                PerformDocumentAction200Example:
                  summary: Default performDocumentAction 200 response
                  x-microcks-default: true
                  value:
                    responseStatus: SUCCESS
                    id: 100001
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    DocumentCreateResponse:
      type: object
      properties:
        responseStatus:
          type: string
        id:
          type: integer
          description: New document ID
        external_id__v:
          type: string
        major_version_number__v:
          type: integer
        minor_version_number__v:
          type: integer
    DocumentFields:
      type: object
      description: Document field values (field names end in __v for standard, __c for custom)
      properties:
        id:
          type: integer
        name__v:
          type: string
        type__v:
          type: string
        subtype__v:
          type: string
        classification__v:
          type: string
        lifecycle__v:
          type: string
        status__v:
          type: string
        created_by__v:
          type: integer
        last_modified_by__v:
          type: integer
        created_date__v:
          type: string
          format: date-time
        last_modified_date__v:
          type: string
          format: date-time
        major_version_number__v:
          type: integer
        minor_version_number__v:
          type: integer
        document_number__v:
          type: string
        description__v:
          type: string
        size__v:
          type: integer
        format__v:
          type: string
      additionalProperties: true
    DocumentResponse:
      type: object
      properties:
        responseStatus:
          type: string
        document:
          $ref: '#/components/schemas/DocumentFields'
        versions:
          type: array
          items:
            type: object
            properties:
              number:
                type: string
              value:
                type: string
              format: uri
    DocumentUpdateResponse:
      type: object
      properties:
        responseStatus:
          type: string
        id:
          type: integer
        major_version_number__v:
          type: integer
        minor_version_number__v:
          type: integer
    DocumentListResponse:
      type: object
      properties:
        responseStatus:
          type: string
        documents:
          type: array
          items:
            type: object
            properties:
              document:
                $ref: '#/components/schemas/DocumentFields'
        size:
          type: integer
        start:
          type: integer
    VaultResponse:
      type: object
      properties:
        responseStatus:
          type: string
          enum:
          - SUCCESS
          - FAILURE
        id:
          type: integer
        errors:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              message:
                type: string
  parameters:
    DocumentId:
      name: documentId
      in: path
      required: true
      description: Vault document ID
      schema:
        type: integer
      example: 12345
  securitySchemes:
    VaultSession:
      type: apiKey
      in: header
      name: Authorization
      description: Vault Session ID from /auth endpoint