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

> ## Agent Instructions
> - Base URLs: models `https://api.aisa.one/v1` (Gemini GenerateContent: `https://api.aisa.one/v1beta`); data APIs `https://api.aisa.one/apis/v1`. The `servers` of each operation in https://aisa.one/openapi.yaml is authoritative.
> - Auth: `Authorization: Bearer $AISA_API_KEY`. Never print, log, or commit the key.
> - MCP (preferred for agents): `https://mcp.aisa.one/mcp`, signed in with OAuth, so there is no key to paste.
> - Agent Skill: `npx skills add AIsa-team/agent-skills --skill aisa`. Fallback with the AIsa CLI: `aisa skills install aisa`.
> - Spending: docs, https://aisa.one/models, https://aisa.one/api, `/v1/models`, and MCP `search`, `list_categories`, `get_details`, `batch_quote`, and the `account` operation are free. Quote the exact calls before running them (MCP `batch_quote`, CLI `aisa quote --json`). If the quote reports `auto_execute_eligible: true`, run it unless the user set a tighter limit or asked only for a quote. Otherwise, tell the user in one message the planned calls, the quoted price, and a total USD budget for the task, then wait for approval. Direct HTTP calls follow the stricter rule at https://aisa.one/docs/get-started/cli.md#direct-http-fallback. Do not make paid calls to test availability. Full rule: https://aisa.one/llms.txt

# extract

> Extracts relevant content from specific web URLs.

<!-- aisa-pricing:start -->
Usage-based billing; Default request estimate: $0.02 USD (not a fixed price). Account-specific pricing and final settlement may differ.
<!-- aisa-pricing:end -->

## Request contract

* **Method and path:** POST /apis/v1/parallel/extract
* **Availability:** enabled
* **Request URL template:** [https://api.aisa.one/apis/v1/parallel/extract](https://api.aisa.one/apis/v1/parallel/extract)
* **Runtime facts:** 5d413ff65ac53e696e28c5a12c4dbbb99e94b7667cbafba2e2c6b9da9156a731

[Complete OpenAPI definition](https://aisa.one/docs/openapi/parallel.ai.json)

Effective request and pricing declaration (including authentication and referenced schemas):

```json theme={null}
{
  "operationId": "any_parallel_ai_apis_v1_parallel_extract",
  "method": "POST",
  "path": "/apis/v1/parallel/extract",
  "servers": [
    {
      "url": "https://api.aisa.one"
    }
  ],
  "parameters": [],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "additionalProperties": false,
          "description": "Extract request.",
          "properties": {
            "advanced_settings": {
              "anyOf": [
                {
                  "additionalProperties": false,
                  "description": "Advanced extract configuration.\n\nThese settings may impact result quality and latency unless used carefully.\nSee https://docs.parallel.ai/search/advanced-extract-settings for more info.",
                  "properties": {
                    "excerpt_settings": {
                      "anyOf": [
                        {
                          "additionalProperties": false,
                          "description": "Optional settings for returning relevant excerpts.",
                          "properties": {
                            "max_chars_per_result": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Optional upper bound on the total number of characters to include per url. Excerpts may contain fewer characters than this limit to maximize relevance and token efficiency.",
                              "title": "Max Chars Per Result"
                            }
                          },
                          "title": "V1ExcerptSettings",
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Controls excerpt sizes. Provide excerpt settings for fine-grained control, or omit to use defaults."
                    },
                    "fetch_policy": {
                      "anyOf": [
                        {
                          "description": "Policy for live fetching web results.",
                          "properties": {
                            "disable_cache_fallback": {
                              "default": false,
                              "description": "If false, fallback to cached content older than max-age if live fetch fails or times out. If true, returns an error instead.",
                              "title": "Disable Cache Fallback",
                              "type": "boolean"
                            },
                            "max_age_seconds": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Maximum age of cached content in seconds to trigger a live fetch. Minimum value 600 seconds (10 minutes).",
                              "examples": [
                                86400
                              ],
                              "title": "Max Age Seconds"
                            },
                            "timeout_seconds": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Timeout in seconds for fetching live content if unavailable in cache.",
                              "examples": [
                                60.0
                              ],
                              "title": "Timeout Seconds"
                            }
                          },
                          "title": "FetchPolicy",
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Fetch policy: determines when to return cached content from the index (faster) vs fetching live content (fresher). Default is to use a dynamic policy based on the search objective and url. Note: enabling live fetch significantly increases extract latency because it requires fetching content from source websites."
                    },
                    "full_content": {
                      "anyOf": [
                        {
                          "description": "Optional settings for returning full content.",
                          "properties": {
                            "max_chars_per_result": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Optional limit on the number of characters to include in the full content for each url. Full content always starts at the beginning of the page and is truncated at the limit if necessary.",
                              "title": "Max Chars Per Result"
                            }
                          },
                          "title": "FullContentSettings",
                          "type": "object"
                        },
                        {
                          "type": "boolean"
                        }
                      ],
                      "default": false,
                      "description": "Controls full content extraction. Set to true to enable with defaults, false to disable, or provide FullContentSettings for fine-grained control.",
                      "title": "Full Content"
                    }
                  },
                  "title": "AdvancedExtractSettings",
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Advanced configuration for fetch policy, excerpt settings, and full content settings. May impact result quality and latency unless used carefully. When omitted, excerpts are enabled and full content is disabled by default."
            },
            "client_model": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "The model generating this request and consuming the results. Enables optimizations and tailors default settings for the model's capabilities.",
              "examples": [
                "claude-opus-4-7",
                "gpt-5.4",
                "gemini-3.1-pro"
              ],
              "title": "Client Model"
            },
            "max_chars_total": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Upper bound on total characters across excerpts from all extracted results.",
              "title": "Max Chars Total"
            },
            "objective": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "As in SearchRequest, a natural-language description of the underlying question or goal driving the request. Used together with search_queries to focus excerpts on the most relevant content.",
              "title": "Objective"
            },
            "search_queries": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional keyword search queries, as in SearchRequest. Used together with objective to focus excerpts on the most relevant content.",
              "title": "Search Queries"
            },
            "session_id": {
              "anyOf": [
                {
                  "maxLength": 1000,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Session identifier to track calls across separate search and extract calls, to be used as part of a larger task. Specifying it may give better contextual results for subsequent API calls.",
              "title": "Session Id"
            },
            "urls": {
              "description": "URLs to extract content from. Up to 20 URLs.",
              "items": {
                "type": "string"
              },
              "title": "Urls",
              "type": "array"
            }
          },
          "required": [
            "urls"
          ],
          "title": "V1ExtractRequest",
          "type": "object"
        }
      }
    },
    "required": true
  },
  "x-aisa-status": "enabled",
  "x-aisa-pricing": {
    "cost_contract": "response_count",
    "customer_multiplier": 1.0,
    "customer_pricing": "provider_cost_multiplier",
    "default_request_estimate_usd": 0.02,
    "estimate_source": "profile_seed",
    "evidence_source": "response_body"
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  }
}
```

## Cost and request rules

Usage-based billing; Default request estimate: \$0.02 USD (not a fixed price). Account-specific pricing and final settlement may differ.

Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.

* **Default request reference estimate (USD):** 0.02
* **Cost contract:** response\_count
* **Published reference multiplier:** 1.0
* **Settlement evidence source:** response\_body


## OpenAPI

````yaml openapi/parallel.ai.json POST /apis/v1/parallel/extract
openapi: 3.1.0
info:
  description: ''
  title: Parallel.ai
  version: '1'
  x-aisa-capabilities:
    idempotency: Idempotency-Key
    max_price: X-AISA-Max-Price-USD
    quote:
      header: X-AISA-Cost-Mode
      value: quote
  x-aisa-catalogs:
    parallel.ai:
      description: ''
      title: Parallel.ai
      x-aisa-capabilities:
        idempotency: Idempotency-Key
        max_price: X-AISA-Max-Price-USD
        quote:
          header: X-AISA-Cost-Mode
          value: quote
      x-aisa-document:
        facts_hash: 5d413ff65ac53e696e28c5a12c4dbbb99e94b7667cbafba2e2c6b9da9156a731
        generator_version: '3'
        protocol_version: '1'
        schema_version: '1'
      x-aisa-plans:
        builder: 1
        display_plan: payg
        payg: 1
        similarweb_payg: 1
        team: 1
        version: e70a0959cd1b93b84ae16dffd7a538273ddb9c1d46277b82823c37ff1b6bc0fb
  x-aisa-configured-paths:
    - /apis/v1/parallel/chat/completions
    - /apis/v1/parallel/extract
    - /apis/v1/parallel/findall/ingest
    - /apis/v1/parallel/findall/runs/{findall_id}
    - /apis/v1/parallel/findall/runs/{findall_id}/cancel
    - /apis/v1/parallel/findall/runs/{findall_id}/events
    - /apis/v1/parallel/findall/runs/{findall_id}/result
    - /apis/v1/parallel/findall/runs/{findall_id}/schema
    - /apis/v1/parallel/monitors/{monitor_id}
    - /apis/v1/parallel/monitors/{monitor_id}/cancel
    - /apis/v1/parallel/monitors/{monitor_id}/events
    - /apis/v1/parallel/monitors/{monitor_id}/update
    - /apis/v1/parallel/tasks/groups
    - /apis/v1/parallel/tasks/groups/{taskgroup_id}
    - /apis/v1/parallel/tasks/groups/{taskgroup_id}/events
    - /apis/v1/parallel/tasks/groups/{taskgroup_id}/runs/{run_id}
    - /apis/v1/parallel/tasks/runs/{run_id}
    - /apis/v1/parallel/tasks/runs/{run_id}/events
    - /apis/v1/parallel/tasks/runs/{run_id}/input
    - /apis/v1/parallel/tasks/runs/{run_id}/result
    - /apis/v1/parallel/v1beta/tasks/runs/{run_id}/events
  x-aisa-document:
    composer_version: '20'
    document_hash: sha256:faf7bdc612cf28356fbb13a4aafcba6664c0f5f6176fe3ef56b5c4d887f62c03
    facts_hash: 5d413ff65ac53e696e28c5a12c4dbbb99e94b7667cbafba2e2c6b9da9156a731
    generator_version: '3'
    protocol_version: '1'
    response_pending: []
    schema_version: '1'
  x-aisa-plans:
    builder: 1
    display_plan: payg
    payg: 1
    similarweb_payg: 1
    team: 1
    version: e70a0959cd1b93b84ae16dffd7a538273ddb9c1d46277b82823c37ff1b6bc0fb
  x-aisa-provider: parallel.ai
servers:
  - url: https://api.aisa.one
security:
  - bearerAuth: []
paths:
  /apis/v1/parallel/extract:
    post:
      tags:
        - default
      summary: extract
      description: >-
        Extracts relevant content from specific web URLs.


        <!-- aisa-pricing:start -->

        Usage-based billing; Default request estimate: $0.02 USD (not a fixed
        price). Account-specific pricing and final settlement may differ.

        <!-- aisa-pricing:end -->
      operationId: any_parallel_ai_apis_v1_parallel_extract
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              description: Extract request.
              properties:
                advanced_settings:
                  anyOf:
                    - additionalProperties: false
                      description: >-
                        Advanced extract configuration.


                        These settings may impact result quality and latency
                        unless used carefully.

                        See
                        https://docs.parallel.ai/search/advanced-extract-settings
                        for more info.
                      properties:
                        excerpt_settings:
                          anyOf:
                            - additionalProperties: false
                              description: >-
                                Optional settings for returning relevant
                                excerpts.
                              properties:
                                max_chars_per_result:
                                  anyOf:
                                    - type: integer
                                    - type: 'null'
                                  description: >-
                                    Optional upper bound on the total number of
                                    characters to include per url. Excerpts may
                                    contain fewer characters than this limit to
                                    maximize relevance and token efficiency.
                                  title: Max Chars Per Result
                              title: V1ExcerptSettings
                              type: object
                            - type: 'null'
                          description: >-
                            Controls excerpt sizes. Provide excerpt settings for
                            fine-grained control, or omit to use defaults.
                        fetch_policy:
                          anyOf:
                            - description: Policy for live fetching web results.
                              properties:
                                disable_cache_fallback:
                                  default: false
                                  description: >-
                                    If false, fallback to cached content older
                                    than max-age if live fetch fails or times
                                    out. If true, returns an error instead.
                                  title: Disable Cache Fallback
                                  type: boolean
                                max_age_seconds:
                                  anyOf:
                                    - type: integer
                                    - type: 'null'
                                  description: >-
                                    Maximum age of cached content in seconds to
                                    trigger a live fetch. Minimum value 600
                                    seconds (10 minutes).
                                  examples:
                                    - 86400
                                  title: Max Age Seconds
                                timeout_seconds:
                                  anyOf:
                                    - type: number
                                    - type: 'null'
                                  description: >-
                                    Timeout in seconds for fetching live content
                                    if unavailable in cache.
                                  examples:
                                    - 60
                                  title: Timeout Seconds
                              title: FetchPolicy
                              type: object
                            - type: 'null'
                          description: >-
                            Fetch policy: determines when to return cached
                            content from the index (faster) vs fetching live
                            content (fresher). Default is to use a dynamic
                            policy based on the search objective and url. Note:
                            enabling live fetch significantly increases extract
                            latency because it requires fetching content from
                            source websites.
                        full_content:
                          anyOf:
                            - description: Optional settings for returning full content.
                              properties:
                                max_chars_per_result:
                                  anyOf:
                                    - type: integer
                                    - type: 'null'
                                  description: >-
                                    Optional limit on the number of characters
                                    to include in the full content for each url.
                                    Full content always starts at the beginning
                                    of the page and is truncated at the limit if
                                    necessary.
                                  title: Max Chars Per Result
                              title: FullContentSettings
                              type: object
                            - type: boolean
                          default: false
                          description: >-
                            Controls full content extraction. Set to true to
                            enable with defaults, false to disable, or provide
                            FullContentSettings for fine-grained control.
                          title: Full Content
                      title: AdvancedExtractSettings
                      type: object
                    - type: 'null'
                  description: >-
                    Advanced configuration for fetch policy, excerpt settings,
                    and full content settings. May impact result quality and
                    latency unless used carefully. When omitted, excerpts are
                    enabled and full content is disabled by default.
                client_model:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    The model generating this request and consuming the results.
                    Enables optimizations and tailors default settings for the
                    model's capabilities.
                  examples:
                    - claude-opus-4-7
                    - gpt-5.4
                    - gemini-3.1-pro
                  title: Client Model
                max_chars_total:
                  anyOf:
                    - type: integer
                    - type: 'null'
                  description: >-
                    Upper bound on total characters across excerpts from all
                    extracted results.
                  title: Max Chars Total
                objective:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    As in SearchRequest, a natural-language description of the
                    underlying question or goal driving the request. Used
                    together with search_queries to focus excerpts on the most
                    relevant content.
                  title: Objective
                search_queries:
                  anyOf:
                    - items:
                        type: string
                      type: array
                    - type: 'null'
                  description: >-
                    Optional keyword search queries, as in SearchRequest. Used
                    together with objective to focus excerpts on the most
                    relevant content.
                  title: Search Queries
                session_id:
                  anyOf:
                    - maxLength: 1000
                      type: string
                    - type: 'null'
                  description: >-
                    Session identifier to track calls across separate search and
                    extract calls, to be used as part of a larger task.
                    Specifying it may give better contextual results for
                    subsequent API calls.
                  title: Session Id
                urls:
                  description: URLs to extract content from. Up to 20 URLs.
                  items:
                    type: string
                  title: Urls
                  type: array
              required:
                - urls
              title: V1ExtractRequest
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                errors:
                  - content: Error fetching content from https://www.example.com
                    error_type: fetch_error
                    http_status_code: 500
                    url: https://www.example.com
                extract_id: extract_8a911eb27c7a4afaa20d0d9dc98d07c0
                results:
                  - excerpts:
                      - Excerpted text ...
                    full_content: Full content ...
                    title: Example Title
                    url: https://www.example.com
                session_id: session_8a911eb27c7a4afaa20d0d9dc98d07c0
              schema:
                $ref: '#/components/schemas/ResponseB67C75A8Feba_V1ExtractResponse'
          description: Successful Response
        default:
          content:
            application/json:
              schema: {}
          description: >-
            Error response; upstream passthrough responses may use provider
            formats
components:
  schemas:
    ResponseB67C75A8Feba_V1ExtractResponse:
      description: Extract response.
      properties:
        errors:
          description: 'Extract errors: requested URLs not in the results.'
          items:
            $ref: '#/components/schemas/ResponseB67C75A8Feba_ExtractError'
          title: Errors
          type: array
        extract_id:
          description: Extract request ID, e.g. `extract_cad0a6d2dec046bd95ae900527d880e7`
          title: Extract Id
          type: string
        results:
          description: Successful extract results.
          items:
            $ref: '#/components/schemas/ResponseB67C75A8Feba_V1ExtractResult'
          title: Results
          type: array
        session_id:
          description: >-
            Session identifier. Echoed back from the request if provided,
            otherwise generated by the server. Should be passed to future search
            and extract calls made by the agent as part of the same larger task.
          examples:
            - session_8a911eb27c7a4afaa20d0d9dc98d07c0
          title: Session Id
          type: string
        usage:
          anyOf:
            - items:
                $ref: '#/components/schemas/ResponseB67C75A8Feba_UsageItem'
              type: array
            - type: 'null'
          description: Usage metrics for the extract request.
          title: Usage
        warnings:
          anyOf:
            - items:
                $ref: '#/components/schemas/ResponseB67C75A8Feba_Warning'
              type: array
            - type: 'null'
          description: Warnings for the extract request, if any.
          title: Warnings
      required:
        - extract_id
        - results
        - errors
        - session_id
      title: V1ExtractResponse
      type: object
    ResponseB67C75A8Feba_ExtractError:
      description: Extract error details.
      properties:
        content:
          anyOf:
            - type: string
            - type: 'null'
          description: Content returned for http client or server errors, if any.
          title: Content
        error_type:
          description: Error type.
          title: Error Type
          type: string
        http_status_code:
          anyOf:
            - type: integer
            - type: 'null'
          description: HTTP status code, if available.
          title: Http Status Code
        url:
          title: Url
          type: string
      required:
        - url
        - error_type
        - http_status_code
        - content
      title: ExtractError
      type: object
    ResponseB67C75A8Feba_V1ExtractResult:
      description: Extract result for a single URL.
      properties:
        excerpts:
          description: Relevant excerpted content from the URL, formatted as markdown.
          items:
            type: string
          title: Excerpts
          type: array
        full_content:
          anyOf:
            - type: string
            - type: 'null'
          description: Full content from the URL formatted as markdown, if requested.
          title: Full Content
        publish_date:
          anyOf:
            - type: string
            - type: 'null'
          description: Publish date of the webpage in YYYY-MM-DD format, if available.
          title: Publish Date
        title:
          anyOf:
            - type: string
            - type: 'null'
          description: Title of the webpage, if available.
          title: Title
        url:
          description: URL associated with the search result.
          title: Url
          type: string
      required:
        - url
        - excerpts
      title: V1ExtractResult
      type: object
    ResponseB67C75A8Feba_UsageItem:
      description: Usage item for a single operation.
      properties:
        count:
          description: Count of the SKU.
          examples:
            - 1
          title: Count
          type: integer
        name:
          description: Name of the SKU.
          examples:
            - sku_search
            - sku_extract_excerpts
          title: Name
          type: string
      required:
        - name
        - count
      title: UsageItem
      type: object
    ResponseB67C75A8Feba_Warning:
      description: Human-readable message for a task.
      properties:
        detail:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          description: Optional detail supporting the warning.
          title: Detail
        message:
          description: Human-readable message.
          title: Message
          type: string
        type:
          description: >-
            Type of warning. Note that adding new warning types is considered a
            backward-compatible change.
          enum:
            - spec_validation_warning
            - input_validation_warning
            - warning
          examples:
            - spec_validation_warning
            - input_validation_warning
          title: Type
          type: string
      required:
        - type
        - message
      title: Warning
      type: object
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.