> ## 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.

# SERP API AI Summary

> Returns the AI overview Google shows above the results for a query on Google.

Returns the AI overview Google shows above the results for a query on Google. Returns `keyword`, `type`, `se_domain`, `location_code`, `language_code`, `check_url`, `datetime`, `spell`, `refinement_chips`, `item_types`, `items_count` and `items`. Wrapped in DataForSEO's envelope: data in `tasks[0].result`, outcome in `tasks[0].status_code` - a rejected request still returns HTTP 200.

## Example

<CodeGroup>
  ```bash REST theme={null}
  curl -X POST "https://api.aisa.one/apis/v1/dataforseo/serp/ai_summary" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -d '[{"task_id": "...", "prompt": "...", "support_extra": "..."}]'
  ```

  ```jsonc MCP theme={null}
  // Copy this whole block into Claude Code, Codex, Cursor or any coding agent.
  // It carries everything needed to connect, authorize and run this example —
  // no key to paste, one click of Allow in the browser.
  {
    "operation_id": "post_dataforseo_serp_ai_summary",
    "arguments": {},
    "max_price_usd": 0.05
  }
  // ── for the agent ─────────────────────────────────────────────────────────
  // Register the AIsa MCP server, then call its `use` tool with the JSON above.
  //   name       aisa
  //   endpoint   https://mcp.aisa.one/mcp
  //   transport  streamable-http
  //   auth       OAuth. The server publishes RFC 9728 metadata, so open a
  //              browser and the user clicks Allow once — nothing to paste.
  //              If AISA_API_KEY is set, send it as a bearer header instead.
  // Use your own MCP mechanism, not a hand-edited config file:
  //   Codex        codex mcp add aisa --url https://mcp.aisa.one/mcp
  //   Claude Code  claude mcp add --transport http -s user aisa https://mcp.aisa.one/mcp
  //   Cursor / VS Code   a "url" entry for https://mcp.aisa.one/mcp in the MCP config
  // The server lists five tools over https://mcp.aisa.one/servers worth of APIs:
  // search, get_details, use, batch_use, list_categories. search and
  // get_details are free; use is billed per call and max_price_usd refuses
  // anything above the cap before spending. This operation's full contract —
  // every argument, the response shape, the price and the pitfalls — is at
  //   https://aisa.one/docs/api-reference/dataforseo/post_dataforseo-serp-ai-summary.md
  // Then run the call and show me the result.
  ```
</CodeGroup>

<Note>
  **First time?** Point any MCP client at `https://mcp.aisa.one/mcp` — Claude
  Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client
  opens a browser, you click Allow once, and there is no key to paste. The
  commands per client, and what each call costs, are on
  [aisa.one/mcp](https://aisa.one/mcp#connect).
</Note>

[Set this endpoint up in your agent →](https://aisa.one/mcp?from=/api-reference/dataforseo/post_dataforseo-serp-ai-summary)


## OpenAPI

````yaml openapi/dataforseo.json POST /dataforseo/serp/ai_summary
openapi: 3.0.3
info:
  title: DataForSEO API
  version: 1.0.0
  description: DataForSEO API endpoints exposed through the AIsa unified gateway.
servers:
  - url: https://api.aisa.one/apis/v1
security:
  - BearerAuth: []
paths:
  /dataforseo/serp/ai_summary:
    post:
      summary: SERP API AI Summary
      description: >-
        The purpose of the Live SERP API AI Summary endpoint is to provide a
        summary of the content found on any SERP and generate a response based
        on the user’s specified prompt. To obtain results, you have to specify
        task_id, which you can find in the response to the POST request. Learn
        more in our Help Center.
      operationId: post_dataforseo_serp_ai_summary
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  task_id:
                    type: string
                    description: >-
                      task identifier required field unique identifier of the
                      associated task in the UUID format you will be able to use
                      it within 30 days to request the results of the task at
                      any time
                  prompt:
                    type: string
                    description: >-
                      AI prompt optional field additional task for AI
                      summariser; any form of text, question or information that
                      communicates to AI what response you're looking for; max
                      number of symbols or characters you can specify: 2000;
                      note: your prompt has to be relevant to the keyword
                      specified in the POST request to SERP API
                  support_extra:
                    type: boolean
                    description: >-
                      support extra SERP features optional field if set to true,
                      the AI model will consider the following extra SERP
                      features, in addition to organic results: answer_box,
                      knowledge_graph, featured_snippet; default value: true
                  fetch_content:
                    type: boolean
                    description: >-
                      fetch content from pages in SERPs optional field if set to
                      true, the API will fetch the content from pages featured
                      in SERP results, and the AI model will consider this
                      content when generating the summary in the result; default
                      value: false
                  include_links:
                    type: boolean
                    description: >-
                      include source links in the summary optional field if set
                      to true, the summary field in the API response will
                      contain links to sources of the generated summary; default
                      value: false
                required:
                  - task_id
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  version:
                    type: string
                    description: The current version of the API
                  status_code:
                    type: integer
                    description: >-
                      general status code you can find the full list of the
                      response codes here
                  status_message:
                    type: string
                    description: >-
                      general informational message you can find the full list
                      of general informational messages here
                  time:
                    type: string
                    description: total execution time, seconds
                  cost:
                    type: number
                    description: total tasks cost, USD
                  tasks:
                    type: array
                    items:
                      type: string
                    description: Array of tasks
                  tasks[].id:
                    type: string
                    description: >-
                      task identifier unique task identifier in our system in
                      the UUID format
                  tasks[].status_code:
                    type: integer
                    description: >-
                      status code of the task generated by DataForSEO, can be
                      within the following range: 10000-60000 you can find the
                      full list of the response codes here
                  tasks[].status_message:
                    type: string
                    description: >-
                      informational message of the task you can find the full
                      list of general informational messages here
                  tasks[].result_count:
                    type: integer
                    description: Number of elements in the result array
                  tasks[].path:
                    type: array
                    items:
                      type: string
                    description: URL path
                  tasks[].data:
                    type: object
                    description: >-
                      contains the same parameters that you specified in the
                      POST request
                  tasks[].result:
                    type: array
                    items:
                      type: string
                    description: Array of results
                  tasks[].result[].items_count:
                    type: integer
                    description: number of items in the results array
                  tasks[].result[].items:
                    type: array
                    items:
                      type: string
                    description: Items array
                  tasks[].result[].items[].summary:
                    type: string
                    description: >-
                      generated summary summary generated by the AI model
                      according to the parameters specified in the request
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '429':
          description: Rate limit exceeded
        '500':
          description: Internal server error
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````

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