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

# Unified API

> Capability-first execution and provider endpoints under /api/v2.

# Unified API

DumplingAI's Unified API is the capability-first API lane under `/api/v2`.

It is the recommended default for new focused data integrations. Use Direct Endpoints under `/api/v1` when you need legacy request shapes or the current Make.com module flow.

This surface is organized around two ways to work:

* `capabilities`: ask DumplingAI to do a job like `search_news`, `extract_document`, or `scrape_page`
* `provider endpoints`: call a specific managed upstream endpoint like `serper.search`, `perplexity.search`, or `firecrawl.scrape`

Direct Endpoints under `/api/v1` remain available and unchanged.

## Base URL

```text theme={null}
https://app.dumplingai.com
```

## Capability lane

Use capabilities when you want the cleanest interface.

### Endpoints

* `POST /api/v2/search`
* `POST /api/v2/details`
* `POST /api/v2/run`

`POST /api/v2/details` now returns a lean default object. Pass `includeRelated: true` when you also want related providers, endpoints, and capabilities.

### Example

```bash theme={null}
curl -X POST https://app.dumplingai.com/api/v2/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "capability",
    "id": "search_news",
    "input": {
      "query": "latest AI regulation",
      "dateRange": "pastWeek"
    }
  }'
```

## Provider endpoint lane

Use provider endpoints when you know the upstream API you want.

### Endpoints

* `POST /api/v2/search`
* `POST /api/v2/details`
* `POST /api/v2/run`

### Example

```bash theme={null}
curl -X POST https://app.dumplingai.com/api/v2/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "endpoint",
    "id": "serper.search",
    "input": {
      "query": "best seo keywords for plumbers in nyc"
    },
    "options": {
      "include_native": true
    }
  }'
```

## Response envelope

Both lanes share the same outer response shape:

```json theme={null}
{
  "success": true,
  "requestId": "req_123",
  "object": "capability_result",
  "data": {},
  "meta": {}
}
```

Error responses:

```json theme={null}
{
  "success": false,
  "requestId": "req_123",
  "error": "Provider not allowed for this API key",
  "code": "PROVIDER_NOT_ALLOWED"
}
```

## Current capabilities

* `google_search`
* `search_news`
* `search_places`
* `get_google_reviews`
* `crawl_site`
* `screenshot`
* `extract_web`
* `extract_document`
* `extract_image`
* `extract_audio`
* `extract_video`
* `scrape_page`
* `get_youtube_transcript`

Discovery aliases:

* `crawl` resolves to `crawl_site`
* `extract` resolves to `extract_web`

Provider notes:

* `screenshot` supports `firecrawl`, `scrapingfish`, and `phantomjscloud`
* `extract_web`, `extract_document`, `extract_image`, `extract_audio`, and `extract_video` are DumplingAI-managed capabilities and surface `provider: "dumplingai"`
* `crawl_site` defaults to `firecrawl` and falls back to `spidercloud` when needed

## Current provider endpoints

Examples:

* `serper.search`
* `serper.news`
* `serper.places`
* `serper.maps`
* `serper.autocomplete`
* `serper.images`
* `serper.videos`
* `serper.shopping`
* `serper.scholar`
* `serper.patents`
* `perplexity.search`
* `firecrawl.scrape`
* `firecrawl.search`
* `firecrawl.map`
* `firecrawl.crawl`
* `firecrawl.screenshot`
* `scrapingfish.screenshot`
* `spidercloud.scrape`
* `spidercloud.crawl`
* `spidercloud.links`
* `dataforseo.google_reviews`
* `phantomjscloud.screenshot`
* `phantomjscloud.scrape`
* `scrapecreators.youtube_transcript`
* `transcriptapi.youtube_transcript`
* `transcriptapi.youtube_search`
* `transcriptapi.youtube_channel_videos`
* `perplexity.search`
* `dataforseo.dataforseo_labs_google_keyword_ideas`

### Screenshot example

```bash theme={null}
curl -X POST https://app.dumplingai.com/api/v2/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "capability",
    "id": "screenshot",
    "provider": "firecrawl",
    "input": {
      "url": "https://example.com",
      "fullPage": true,
      "wait": 1000,
      "viewport": {
        "width": 1280,
        "height": 800
      }
    }
  }'
```

## Related docs

* [MCP Server](/mcp-server)
* [API Reference Overview](/api-reference/introduction)
