> ## Documentation Index
> Fetch the complete documentation index at: https://docs.helve.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Extract page content

> URLs in, clean content out. Returns the full page as markdown or text, and optionally focused excerpts and a summary when you pass a `query`. URLs the provider cannot fetch are listed in `failed` rather than failing the whole request.



## OpenAPI

````yaml openapi.json POST /v1/extract
openapi: 3.1.0
info:
  title: Helve API
  version: 1.0.0
  description: >-
    One key, one request shape, one bill for the tools your software calls: web
    search across eleven engines, page extraction across nine, and transcription
    across three. Every response says which provider served it, how the request
    was adjusted for that provider, and what it cost.
servers:
  - url: https://helve.dev
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search
    description: >-
      Web search with one schema across Exa, Parallel, Tavily, Brave, Serper,
      Firecrawl, Linkup, Valyu, Jina, Octen, Perplexity, and the `fusion` panel.
  - name: Extract
    description: Fetch and clean pages by URL.
  - name: Transcription
    description: >-
      Durable speech-to-text jobs across AssemblyAI, Deepgram, and ElevenLabs.
      Submit a recording, poll the job.
paths:
  /v1/extract:
    post:
      tags:
        - Extract
      summary: Extract page content
      description: >-
        URLs in, clean content out. Returns the full page as markdown or text,
        and optionally focused excerpts and a summary when you pass a `query`.
        URLs the provider cannot fetch are listed in `failed` rather than
        failing the whole request.
      operationId: extract
      requestBody:
        required: true
        content:
          application/json:
            example:
              urls:
                - https://arxiv.org/abs/2211.17192
              query: how does speculative decoding work
              content:
                excerpts:
                  max_per_url: 3
            schema:
              type: object
              properties:
                urls:
                  type: array
                  items:
                    type: string
                    format: uri
                  minItems: 1
                  maxItems: 20
                  description: >-
                    The pages to extract, 1–20 absolute URLs. Providers that
                    take one URL per call are fanned out by Helve.
                provider:
                  type: string
                  enum:
                    - exa
                    - tavily
                    - parallel
                    - serper
                    - firecrawl
                    - linkup
                    - valyu
                    - jina
                    - octen
                    - auto
                  description: >-
                    Which provider fetches and cleans the pages. `auto`
                    (default) picks the first configured provider in Helve's
                    priority order. Brave and Perplexity have no extraction
                    product.
                query:
                  type: string
                  minLength: 1
                  description: >-
                    What you are extracting for. Drives focused excerpts and
                    summaries on providers that support them (Exa, Tavily,
                    Parallel, Firecrawl, Valyu).
                content:
                  type: object
                  properties:
                    full_text:
                      type: boolean
                      description: Return the whole page in `content`. Default true.
                    max_chars:
                      type: integer
                      minimum: 100
                      maximum: 100000
                      description: >-
                        Cap on `content` length per URL. Native on Exa; Helve
                        truncates for other providers.
                    excerpts:
                      type: object
                      properties:
                        max_per_url:
                          type: integer
                          minimum: 1
                          maximum: 20
                          description: Cap on the number of excerpts per URL.
                        max_chars_per_excerpt:
                          type: integer
                          minimum: 1
                          description: Cap on the length of each excerpt, in characters.
                      additionalProperties: false
                      description: >-
                        Return focused excerpts in `excerpts`, instead of or
                        alongside the full text. Most useful with `query`.
                    summary:
                      type: boolean
                      description: >-
                        Return a per-URL summary in `summary`. Native on Exa and
                        Valyu.
                    format:
                      type: string
                      enum:
                        - markdown
                        - text
                      description: >-
                        Output format for `content`. Native on Tavily and
                        Serper; most providers return markdown regardless.
                  additionalProperties: false
                  description: What to return for each URL.
                include_links:
                  type: boolean
                  description: Return the page's outbound links in `links`. Native on Exa.
                include_images:
                  type: boolean
                  description: >-
                    Return the page's image URLs in `images`. Native on Exa and
                    Tavily.
                max_age_hours:
                  type: integer
                  minimum: 0
                  maximum: 720
                  description: >-
                    Accept a cached copy up to this many hours old; 0 forces a
                    live fetch. Native on Exa.
                timeout_ms:
                  type: integer
                  minimum: 1000
                  maximum: 90000
                  description: >-
                    Per-page fetch timeout in milliseconds, 1000–90000. Native
                    on Exa and Tavily.
                strict:
                  type: boolean
                  description: >-
                    When true, any parameter the serving provider cannot honour
                    is a 400 instead of a warning. Default false.
                provider_options:
                  type: object
                  properties:
                    exa:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Exa when it serves the request;
                        ignored by every other provider.
                    parallel:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Parallel when it serves the request;
                        ignored by every other provider.
                    tavily:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Tavily when it serves the request;
                        ignored by every other provider.
                    brave:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Brave when it serves the request;
                        ignored by every other provider.
                    serper:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Serper when it serves the request;
                        ignored by every other provider.
                    firecrawl:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Firecrawl when it serves the request;
                        ignored by every other provider.
                    linkup:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Linkup when it serves the request;
                        ignored by every other provider.
                    octen:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Octen when it serves the request;
                        ignored by every other provider.
                    valyu:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Valyu when it serves the request;
                        ignored by every other provider.
                    jina:
                      type: object
                      additionalProperties:
                        nullable: true
                      description: >-
                        Passed verbatim to Jina when it serves the request;
                        ignored by every other provider.
                  additionalProperties: false
                  description: >-
                    Escape hatch for provider-native parameters, keyed by
                    provider id and merged into that provider's request
                    unchanged.
              required:
                - urls
              additionalProperties: false
      responses:
        '200':
          description: Extracted content
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Helve's id for this extraction, `ext_…`.
                  provider:
                    type: string
                    enum:
                      - exa
                      - tavily
                      - parallel
                      - serper
                      - firecrawl
                      - linkup
                      - valyu
                      - jina
                      - octen
                    description: >-
                      The provider that served the request, resolved from
                      `auto`.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          description: The URL as requested.
                        final_url:
                          type: string
                          description: >-
                            The URL after redirects, when the provider reports
                            it.
                        title:
                          type: string
                        content:
                          type: string
                          description: >-
                            The full extracted page, in markdown or text per
                            `content.format`.
                        excerpts:
                          type: array
                          items:
                            type: string
                          description: Focused excerpts, when requested.
                        summary:
                          type: string
                          description: Per-URL summary, when requested and supported.
                        published_date:
                          type: string
                          description: ISO 8601 date when known.
                        author:
                          type: string
                        links:
                          type: array
                          items:
                            type: string
                        images:
                          type: array
                          items:
                            type: string
                        raw:
                          nullable: true
                          description: >-
                            The provider's original result object, verbatim.
                            Always present.
                      required:
                        - url
                      additionalProperties: false
                    description: One entry per successfully extracted URL.
                  failed:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                        error:
                          type: string
                      required:
                        - url
                        - error
                      additionalProperties: false
                    description: >-
                      URLs the provider could not fetch, with its reason.
                      Partial success is a 200.
                  warnings:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          enum:
                            - param_ignored
                            - param_approximated
                            - results_post_filtered
                        param:
                          type: string
                          description: The request field the warning concerns.
                        message:
                          type: string
                      required:
                        - code
                        - message
                      additionalProperties: false
                    description: >-
                      How the request was adjusted for the serving provider.
                      Empty when it was honoured exactly.
                  usage:
                    type: object
                    properties:
                      cost_usd:
                        type: number
                        description: >-
                          What this request debited from your balance: the
                          provider's raw price.
                      credits:
                        type: number
                    required:
                      - cost_usd
                      - credits
                    additionalProperties: false
                  latency_ms:
                    type: number
                    description: Wall-clock time Helve spent on the request.
                required:
                  - id
                  - provider
                  - results
                  - failed
                  - warnings
                  - usage
                  - latency_ms
                additionalProperties: false
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - unauthorized
                          - invalid_request
                          - provider_not_available
                          - provider_not_configured
                          - provider_error
                          - not_found
                          - insufficient_credits
                        description: >-
                          Stable machine-readable category. `invalid_request`
                          carries validation issues in `detail`;
                          `provider_error` carries the provider's own error
                          body.
                      message:
                        type: string
                        description: Human-readable explanation.
                      detail:
                        nullable: true
                        description: >-
                          Validation issues for `invalid_request`; the
                          provider's error body for `provider_error`.
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - unauthorized
                          - invalid_request
                          - provider_not_available
                          - provider_not_configured
                          - provider_error
                          - not_found
                          - insufficient_credits
                        description: >-
                          Stable machine-readable category. `invalid_request`
                          carries validation issues in `detail`;
                          `provider_error` carries the provider's own error
                          body.
                      message:
                        type: string
                        description: Human-readable explanation.
                      detail:
                        nullable: true
                        description: >-
                          Validation issues for `invalid_request`; the
                          provider's error body for `provider_error`.
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '402':
          description: Insufficient credits
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - unauthorized
                          - invalid_request
                          - provider_not_available
                          - provider_not_configured
                          - provider_error
                          - not_found
                          - insufficient_credits
                        description: >-
                          Stable machine-readable category. `invalid_request`
                          carries validation issues in `detail`;
                          `provider_error` carries the provider's own error
                          body.
                      message:
                        type: string
                        description: Human-readable explanation.
                      detail:
                        nullable: true
                        description: >-
                          Validation issues for `invalid_request`; the
                          provider's error body for `provider_error`.
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '502':
          description: Provider error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - unauthorized
                          - invalid_request
                          - provider_not_available
                          - provider_not_configured
                          - provider_error
                          - not_found
                          - insufficient_credits
                        description: >-
                          Stable machine-readable category. `invalid_request`
                          carries validation issues in `detail`;
                          `provider_error` carries the provider's own error
                          body.
                      message:
                        type: string
                        description: Human-readable explanation.
                      detail:
                        nullable: true
                        description: >-
                          Validation issues for `invalid_request`; the
                          provider's error body for `provider_error`.
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '503':
          description: Provider not configured
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - unauthorized
                          - invalid_request
                          - provider_not_available
                          - provider_not_configured
                          - provider_error
                          - not_found
                          - insufficient_credits
                        description: >-
                          Stable machine-readable category. `invalid_request`
                          carries validation issues in `detail`;
                          `provider_error` carries the provider's own error
                          body.
                      message:
                        type: string
                        description: Human-readable explanation.
                      detail:
                        nullable: true
                        description: >-
                          Validation issues for `invalid_request`; the
                          provider's error body for `provider_error`.
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An API key from the dashboard, `sk_live_…`, sent as `Authorization:
        Bearer sk_live_…`.

````