Voyant.io PD Fs API

PDF upload and processing. Extract text and structure from documents.

Operations 15

POST /api/pdfs/upload Upload Pdf #
OPTIONS /api/pdfs/upload Upload Pdf Options #
POST /api/pdfs/{pdf_id}/process Process Pdf #
GET /api/pdfs/{pdf_id}/status Get Pdf Status #
POST /api/pdfs/{pdf_id}/cancel Cancel Pdf Processing #
POST /api/pdfs/{pdf_id}/retry Retry Pdf Processing #
GET /api/pdfs List Pdfs Root #
DELETE /api/pdfs/{pdf_id} Delete Pdf #
GET /api/pdfs/{pdf_id}/chunks Get Pdf Chunks #
POST /api/pdfs/{pdf_id}/analyze Analyze Pdf #
POST /api/pdfs/generate-content Generate Content With Pdfs #
GET /api/pdfs/health Pdf Health Check #
GET /api/pdfs/test Pdf Test Endpoint #
OPTIONS /api/pdfs/{path} Pdf Options Handler #
GET /api/pdfs/usage Get Pdf Usage #

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/voyant-pdfs-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 email required.

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

OpenAPI Specification

voyant-pdfs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: VoyantIO PD Fs API
  description: '

    ## Brand Context Intelligence Platform


    VoyantIO provides AI-powered brand context management for GTM teams.


    ### Core Capabilities


    - **Context Streams** - Centralized brand knowledge that any AI tool can use

    - **Telemetry** - Visitor tracking with IP geolocation and company enrichment

    - **Signals** - Social listening across 10+ platforms: GitHub, Reddit, HackerNews, LinkedIn, Twitter/X, Discord, ProductHunt, YouTube, G2, Slack, and government sources

    - **Target Graph** - Account and contact intelligence with engagement tracking

    - **RAG** - Retrieval-augmented content generation with brand awareness


    ### Authentication


    Most endpoints require a Bearer token from Clerk authentication.

    Public endpoints (telemetry ingestion, well-known files) are clearly marked.


    ### Rate Limits


    - Telemetry ingestion: 100 req/min per IP

    - API endpoints: 1000 req/min per org

    '
  version: 1.0.0
servers:
- url: https://voice-forge-production.up.railway.app
  description: Production
tags:
- name: PDFs
  description: PDF upload and processing. Extract text and structure from documents.
paths:
  /api/pdfs/upload:
    post:
      tags:
      - PDFs
      summary: Upload Pdf
      description: 'Upload a PDF file. Processing is now separate and optional.


        - **file**: PDF file to upload (max 10MB)

        - **process_immediately**: Whether to queue processing immediately (default: False)

        - Returns upload status and optionally task information'
      operationId: upload_pdf_api_pdfs_upload_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_pdf_api_pdfs_upload_post'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
    options:
      tags:
      - PDFs
      summary: Upload Pdf Options
      description: Handle OPTIONS preflight request for PDF upload
      operationId: upload_pdf_options_api_pdfs_upload_options
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/pdfs/{pdf_id}/process:
    post:
      tags:
      - PDFs
      summary: Process Pdf
      description: 'Start processing a PDF that has been uploaded.


        - **pdf_id**: ID of the PDF to process

        - Returns task information for tracking progress'
      operationId: process_pdf_api_pdfs__pdf_id__process_post
      security:
      - HTTPBearer: []
      parameters:
      - name: pdf_id
        in: path
        required: true
        schema:
          type: string
          title: Pdf Id
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs/{pdf_id}/status:
    get:
      tags:
      - PDFs
      summary: Get Pdf Status
      description: 'Get the processing status of a PDF, including real-time task progress.


        - **pdf_id**: ID of the PDF

        - Returns detailed status including task progress'
      operationId: get_pdf_status_api_pdfs__pdf_id__status_get
      security:
      - HTTPBearer: []
      parameters:
      - name: pdf_id
        in: path
        required: true
        schema:
          type: string
          title: Pdf Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs/{pdf_id}/cancel:
    post:
      tags:
      - PDFs
      summary: Cancel Pdf Processing
      description: 'Cancel PDF processing if it''s in progress.


        - **pdf_id**: ID of the PDF to cancel

        - Returns 204 if successful, 404 if not found'
      operationId: cancel_pdf_processing_api_pdfs__pdf_id__cancel_post
      security:
      - HTTPBearer: []
      parameters:
      - name: pdf_id
        in: path
        required: true
        schema:
          type: string
          title: Pdf Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs/{pdf_id}/retry:
    post:
      tags:
      - PDFs
      summary: Retry Pdf Processing
      description: 'Retry processing a failed PDF.


        - **pdf_id**: ID of the PDF to retry

        - Returns new task information'
      operationId: retry_pdf_processing_api_pdfs__pdf_id__retry_post
      security:
      - HTTPBearer: []
      parameters:
      - name: pdf_id
        in: path
        required: true
        schema:
          type: string
          title: Pdf Id
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs:
    get:
      tags:
      - PDFs
      summary: List Pdfs Root
      description: 'List uploaded PDFs for the organization.


        - **status**: Filter by processing status (pending, processing, completed, failed)

        - **limit**: Maximum number of results (1-100)

        - **offset**: Offset for pagination

        - Returns list of PDFs with usage statistics'
      operationId: list_pdfs_root_api_pdfs_get
      security:
      - HTTPBearer: []
      parameters:
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Status
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 20
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs/{pdf_id}:
    delete:
      tags:
      - PDFs
      summary: Delete Pdf
      description: 'Delete a PDF and all associated data.


        - **pdf_id**: ID of the PDF to delete

        - Removes the PDF, its chunks, and updates usage tracking'
      operationId: delete_pdf_api_pdfs__pdf_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: pdf_id
        in: path
        required: true
        schema:
          type: string
          title: Pdf Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs/{pdf_id}/chunks:
    get:
      tags:
      - PDFs
      summary: Get Pdf Chunks
      description: 'Get chunks for a specific PDF.


        - **pdf_id**: ID of the PDF

        - **page_number**: Optional filter by page number

        - Returns list of text chunks with metadata'
      operationId: get_pdf_chunks_api_pdfs__pdf_id__chunks_get
      security:
      - HTTPBearer: []
      parameters:
      - name: pdf_id
        in: path
        required: true
        schema:
          type: string
          title: Pdf Id
      - name: page_number
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 1
          - type: 'null'
          title: Page Number
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs/{pdf_id}/analyze:
    post:
      tags:
      - PDFs
      summary: Analyze Pdf
      description: 'Generate AI analysis for a PDF.


        - **pdf_id**: ID of the PDF to analyze

        - **analysis_type**: Type of analysis (''summary'', ''keywords'', ''topics'')

        - Returns analysis result with confidence score'
      operationId: analyze_pdf_api_pdfs__pdf_id__analyze_post
      security:
      - HTTPBearer: []
      parameters:
      - name: pdf_id
        in: path
        required: true
        schema:
          type: string
          title: Pdf Id
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_analyze_pdf_api_pdfs__pdf_id__analyze_post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs/generate-content:
    post:
      tags:
      - PDFs
      summary: Generate Content With Pdfs
      description: 'Generate content using RAG with PDF context support.


        - **query**: Question or topic for content generation

        - **platform**: Target platform (twitter, instagram, etc.)

        - **tone**: Desired tone (professional, casual, etc.)

        - **pdf_ids**: Optional comma-separated list of PDF IDs to include in context

        - **domain**: Optional domain filter for web content

        - **content_type**: Optional content type filter

        - **top_k**: Number of chunks to retrieve (1-20)

        - Returns generated content with PDF and web source attribution'
      operationId: generate_content_with_pdfs_api_pdfs_generate_content_post
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_generate_content_with_pdfs_api_pdfs_generate_content_post'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneratedContent'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/pdfs/health:
    get:
      tags:
      - PDFs
      summary: Pdf Health Check
      description: 'Health check for PDF functionality.

        Verifies that required dependencies are available.'
      operationId: pdf_health_check_api_pdfs_health_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/pdfs/test:
    get:
      tags:
      - PDFs
      summary: Pdf Test Endpoint
      description: Simple test endpoint to verify PDF router is working.
      operationId: pdf_test_endpoint_api_pdfs_test_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/pdfs/{path}:
    options:
      tags:
      - PDFs
      summary: Pdf Options Handler
      description: Handle OPTIONS preflight requests for all PDF endpoints
      operationId: pdf_options_handler_api_pdfs__path__options
      parameters:
      - name: path
        in: path
        required: true
        schema:
          type: string
          title: Path
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/pdfs/usage:
    get:
      tags:
      - PDFs
      summary: Get Pdf Usage
      description: 'Get PDF usage statistics for the organization.


        Returns current usage against limits for the organization.'
      operationId: get_pdf_usage_api_pdfs_usage_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
components:
  schemas:
    Body_analyze_pdf_api_pdfs__pdf_id__analyze_post:
      properties:
        analysis_type:
          type: string
          title: Analysis Type
      type: object
      required:
      - analysis_type
      title: Body_analyze_pdf_api_pdfs__pdf_id__analyze_post
    GeneratedContent:
      properties:
        text:
          type: string
          title: Text
          description: Generated content text
        source_chunks:
          items:
            $ref: '#/components/schemas/SourceChunk'
          type: array
          title: Source Chunks
          description: Source chunks used for generation
        personality_used:
          $ref: '#/components/schemas/PersonalityType'
          description: Personality profile that was applied
          default: default
        template_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Template Id
          description: ID of the template used
        persona_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Persona Id
          description: Gypsum persona ID that was used
        template_enhanced:
          type: boolean
          title: Template Enhanced
          description: Whether custom template was used
          default: false
        persona_enhanced:
          type: boolean
          title: Persona Enhanced
          description: Whether persona context was applied
          default: false
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
          description: Generation metadata including enhancement details
      type: object
      required:
      - text
      - source_chunks
      title: GeneratedContent
      description: Response model for generated content.
    Body_upload_pdf_api_pdfs_upload_post:
      properties:
        file:
          type: string
          contentMediaType: application/octet-stream
          title: File
        process_immediately:
          type: boolean
          title: Process Immediately
          default: false
      type: object
      required:
      - file
      title: Body_upload_pdf_api_pdfs_upload_post
    PersonalityType:
      type: string
      enum:
      - the_architect
      - human_first_closer
      - default
      title: PersonalityType
      description: Available personality types for content generation.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Body_generate_content_with_pdfs_api_pdfs_generate_content_post:
      properties:
        query:
          type: string
          title: Query
        platform:
          type: string
          title: Platform
        tone:
          type: string
          title: Tone
        pdf_ids:
          anyOf:
          - type: string
          - type: 'null'
          title: Pdf Ids
        domain:
          anyOf:
          - type: string
          - type: 'null'
          title: Domain
        content_type:
          anyOf:
          - type: string
          - type: 'null'
          title: Content Type
        top_k:
          type: integer
          maximum: 20.0
          minimum: 1.0
          title: Top K
          default: 5
      type: object
      required:
      - query
      - platform
      - tone
      title: Body_generate_content_with_pdfs_api_pdfs_generate_content_post
    SourceChunk:
      properties:
        chunk_id:
          type: string
          title: Chunk Id
          description: ID of the source chunk
        text:
          type: string
          title: Text
          description: Snippet of the chunk text
        similarity:
          type: number
          title: Similarity
          description: Similarity score
        content_id:
          type: string
          title: Content Id
          description: ID of the parent content
      type: object
      required:
      - chunk_id
      - text
      - similarity
      - content_id
      title: SourceChunk
      description: Source chunk information for generated content.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer