> ## Documentation Index
> Fetch the complete documentation index at: https://velt-raghul-agent-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Extract Agents from File

Use this API to extract agent definitions from an uploaded file. The file is parsed by an LLM and the response returns a list of structured agent configurations that can be passed straight into [Create Agent](/api-reference/rest-apis/v2/agents/create).

Useful for migrating an existing QA checklist (CSV / Excel / PDF / plain text) into agents in bulk.

# Endpoint

`POST https://api.velt.dev/v2/agents/extract`

# Headers

<ParamField header="x-velt-api-key" type="string" required>
  Your API key.
</ParamField>

<ParamField header="x-velt-auth-token" type="string" required>
  Your [Auth Token](/security/auth-tokens).
</ParamField>

# Body

#### Params

<ParamField body="data" type="object" required>
  <Expandable title="properties">
    <ParamField body="fileBase64" type="string" required>
      Min 1 char. Base64-encoded file content.
    </ParamField>

    <ParamField body="mimeType" type="string" required>
      Min 1 char. MIME type of the uploaded file (e.g. `"text/csv"`, `"application/pdf"`, `"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"`).
    </ParamField>

    <ParamField body="provider" type="string">
      LLM provider override: `"gemini"` or `"claude"`.
    </ParamField>
  </Expandable>
</ParamField>

## **Example Requests**

#### 1. Extract from a CSV checklist

```JSON theme={null}
{
  "data": {
    "fileBase64": "QWdlbnQgTmFtZSxEZXNjcmlwdGlvbixJbnN0cnVjdGlvbnMK...",
    "mimeType": "text/csv"
  }
}
```

#### 2. Extract from a PDF checklist

```JSON theme={null}
{
  "data": {
    "fileBase64": "JVBERi0xLjcKJeLjz9MK...",
    "mimeType": "application/pdf"
  }
}
```

# Response

#### Success Response

```JSON theme={null}
{
  "result": {
    "status": "success",
    "message": "Agents extracted successfully",
    "data": {
      "extractionResult": {
        "agents": [
          {
            "name": "Brand Color Check",
            "description": "Verify all CTAs use the primary brand color",
            "instructions": "Check that every <a class='cta'> element uses the primary brand color #1A73E8.",
            "contextGathering": { "strategies": ["web-page-html", "web-page-screenshot"] },
            "execution": { "executionStrategy": "ai" }
          },
          {
            "name": "Heading Font Check",
            "description": "Verify all headings use the brand font",
            "instructions": "Check that every <h1>, <h2>, and <h3> element uses font-family 'Inter'.",
            "contextGathering": { "strategies": ["web-page-html"] },
            "execution": { "executionStrategy": "ai" }
          }
        ],
        "summary": "Extracted 2 agents from CSV file",
        "skipped": []
      }
    }
  }
}
```

| Field                           | Type      | Description                                                                                                  |
| ------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------ |
| `data.extractionResult.agents`  | object\[] | Array of extracted agent configurations ready for [Create Agent](/api-reference/rest-apis/v2/agents/create). |
| `data.extractionResult.summary` | string    | Human-readable summary of the extraction.                                                                    |
| `data.extractionResult.skipped` | object\[] | Rows the engine could not turn into agents (with the reason for each).                                       |

#### Failure Response

```JSON theme={null}
{
  "error": {
    "message": "ERROR_MESSAGE",
    "status": "INVALID_ARGUMENT"
  }
}
```

**Errors:** `INVALID_ARGUMENT` (missing or empty `fileBase64` / `mimeType`, or unsupported MIME type).

<ResponseExample>
  ```js theme={null}
  {
    "result": {
      "status": "success",
      "message": "Agents extracted successfully",
      "data": {
        "extractionResult": {
          "agents": [],
          "summary": "Extracted 0 agents",
          "skipped": []
        }
      }
    }
  }
  ```
</ResponseExample>
