Skip to main content
GET
/
v1
/
dataforseo
/
catalog
/
templates
cURL
curl --request GET \
  --url https://api.surnex.io/v1/dataforseo/catalog/templates \
  --header 'Authorization: Bearer <token>'
{
  "generated_at": "2026-02-24T00:00:00Z",
  "discovery_context": {
    "requested_discovery": true,
    "force_refresh_requested": false,
    "source": "provider",
    "discovered_at": "2026-02-24T00:00:00Z",
    "cache_key": "dataforseo:catalog:discovered:v1",
    "cache_ttl_seconds": 900,
    "cache_available": true,
    "cache_hit": false,
    "provider_calls": 4
  },
  "templates": [
    {
      "service": "serp",
      "category": "serp",
      "title": "SERP API",
      "description": "Live organic SERP results",
      "operation_path": "/serp/google/organic/live",
      "path_template": "/serp/{se}/{type}/live",
      "method": "POST",
      "mode": "live",
      "discovery_source": "static",
      "path_variables": [
        {
          "name": "se",
          "segment_index": 1,
          "description": "Search engine identifier segment in path template",
          "example": "google",
          "required": true
        },
        {
          "name": "type",
          "segment_index": 2,
          "description": "SERP result vertical segment in path template",
          "example": "organic",
          "required": true
        }
      ],
      "tags": [
        "serp",
        "live",
        "post"
      ],
      "execution_hint": {
        "supports_request_body": true,
        "supports_request_query": true,
        "request_body_template": {
          "language_code": "en",
          "keywords": [
            "seo"
          ],
          "location_code": 2840,
          "targets": [
            "example.com"
          ]
        },
        "request_query_template": {},
        "notes": [
          "Replace placeholders in `operation_path` using `path_variables` examples before execution.",
          "POST body shape is endpoint-specific."
        ]
      }
    }
  ],
  "limit": 100,
  "offset": 0,
  "returned": 1,
  "has_more": false,
  "next_offset": null,
  "groups": {
    "service": {
      "serp": [
        {
          "service": "serp",
          "category": "serp",
          "title": "SERP API",
          "description": "Live organic SERP results",
          "operation_path": "/serp/google/organic/live",
          "path_template": "/serp/{se}/{type}/live",
          "method": "POST",
          "mode": "live",
          "discovery_source": "static",
          "path_variables": [
            {
              "name": "se",
              "segment_index": 1,
              "description": "Search engine identifier segment in path template",
              "example": "google",
              "required": true
            },
            {
              "name": "type",
              "segment_index": 2,
              "description": "SERP result vertical segment in path template",
              "example": "organic",
              "required": true
            }
          ],
          "tags": [
            "serp",
            "live",
            "post"
          ],
          "execution_hint": {
            "supports_request_body": true,
            "supports_request_query": true,
            "request_body_template": {
              "language_code": "en",
              "keywords": [
                "seo"
              ],
              "location_code": 2840
            },
            "request_query_template": {},
            "notes": [
              "Replace placeholders in `operation_path` using `path_variables` examples before execution.",
              "POST body shape is endpoint-specific."
            ]
          }
        }
      ]
    }
  },
  "totals": {
    "total_templates": 1,
    "total_services": 1,
    "by_discovery_source": {
      "static": 1,
      "discovered": 0,
      "mixed": 0
    },
    "by_method": {
      "GET": 0,
      "POST": 1
    },
    "by_mode": {
      "live": 1,
      "task_post": 0,
      "task_get": 0,
      "tasks_ready": 0,
      "tasks_fixed": 0
    }
  },
  "supports_custom_paths": true,
  "supports_any_dataforseo_path": true
}

Authorizations

Authorization
string
header
required

Authorization: Bearer sk_...

Query Parameters

service
string
Minimum string length: 1
discover
default:true
discovery_source
enum<string>
Available options:
static,
discovered,
mixed
Required string length: 1 - 128
category
string

Service category used for grouping and filtering

Minimum string length: 1
refresh_discovery
method
enum<string>

HTTPMethod

Available options:
GET,
POST
mode
enum<string>

DataForSeoOperationMode

Available options:
live,
task_post,
task_get,
tasks_ready,
tasks_fixed
group_by
enum<string>

Optional grouping key for response sections. When set, template entries are bucketed into groups without removing templates. Service keys are alphabetical; method keys are GET|POST; mode keys are live|task_post|task_get|tasks_ready|tasks_fixed; discovery source keys are static, discovered, or mixed.

Available options:
service,
method,
mode,
discovery_source
limit
integer
default:100
Required range: x <= 250
offset
integer | null
default:0
Required range: x >= 0

Response

Operation templates for UI builders with path-variable hints and execution scaffolding. Designed for low-friction operation pickers and request construction.

generated_at
string
required
discovery_context
object
required
templates
object[]
required
limit
integer
required
offset
integer
required
Required range: x >= 0
returned
integer
required
Required range: x >= 0
has_more
boolean
required
next_offset
integer | null
required
Required range: x >= 0
totals
object
required
supports_custom_paths
boolean
required
supports_any_dataforseo_path
boolean
required
groups
object

Grouped template buckets keyed by the selected group_by value. Omitted when group_by is not requested.