Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

P4 Search Documentation | 2025.6

# DSL query API endpoints

## Get results for a DSL query

### Summary

Run a DSL query.

GET api/v1.3/search/dsl

### Description

Run a DSL query to carry out a search.

### Parameters

Parameter | Description | Required | Type
--- | --- | --- | ---
search | The P4 Search DSL query URL encoded. | No | string
from | The pagination start position. | No | integer
size | The pagination size. For example, when set to 10, only 10 results will be shown per page. | No | integer

### Example usage

curl -X GET --location "http://localhost:1601/api/v1.3/search/dsl?search=ext%3A+mp3+wav+%2Bmodel%3A+asset"
-H "Authorization: Bearer <JWT>" \
-H "Content-Type: application/json"

P4 Search responds with:

    {
      "took": 174,
      "timed_out": false,
      "_shards": {
        "failed": 0.0,
        "successful": 1.0,
        "total": 1.0,
        "skipped": 0.0
      },
      "hits": {
        "total": {
          "relation": "eq",
          "value": 847
        },
        "hits": [
          {
            "_index": "index-perforce1-000001",
            "_id": "change-917081",
            "_score": null,
            "_source": {
            "type": "change",
            "change": 917081,
            "date": 1179756208000,
            "client": "tony-barney-dev",
            "user": "tony",
            "restricted": false,
            "description": "Add P4Perl 3.5943 sources to depot as basis for the first
                            productized version of P4Perl.
            "depotFile": "//depot/main/p4-perl/...",
            "indexDate": 0
          },
          "sort": [
            -9223372036854775808
          ]
         }, ......    ],
       "max_score": null
      },
      "terminated_early": false
    }

### If a request fails

<error code>:

- 400 DSL parsing error or Elasticsearch bad requests

- 401 Unauthorized

## Get autocomplete suggestions for a DSL keyword

### Summary

Get a list of values for a DSL keyword.

GET api/v1.3/autocomplete/{term}

### Description

Get a list of values for a DSL keyword to carry out a search.

### Parameters

Parameter | Description | Required | Type
--- | --- | --- | ---
term | The DSL keyword for which you want autocomplete values. For example, user. | Yes | string
prefix | The DSL value prefix. | No | string
size | The size of the dropdown list. For example, when set to 10, only 10 values will be shown in the dropdown list. | No | integer
sort | The order in which you want to sort the DSL values. The following values are accepted: popular: The most popular DSL value is presented at the top of the dropdown list. alpha: The DSL values are sorted alphabetically. | No | sort

### Example usage

curl -X GET --location "http://localhost:1601/api/v1.3/autocomplete/user"
-H "Content-Type: application/json" \
-H "Authorization: Bearer <JWT>"

P4 Search responds with:

    {
      "status": {
        "code": 200,
        "message": "OK"
      },
      "data": [
        "Font",
        "Circle",
        "Electric blue",
        "Pattern",
        "Logo",
        "Symbol",
        "Graphics",
        "Symmetry",
        "Rectangle",
        "Brand"
      ]
    }

### If a request fails

<error code>:

- 400 DSL term error or prefix limits.

- 401 Unauthorized

## Populate DSL autocomplete cache

### Summary

Query Elasticsearch for DSL values and populate cache.

PUT api/v1.3/autocomplete/{term}

### Description

Query Elasticsearch for DSL values and populate the cache.

### Parameters

Parameter | Description | Required | Type
--- | --- | --- | ---
term | The DSL keyword for which you want autocomplete values. For example, user. | Yes | string

### Example usage

curl -X PUT --location "http://localhost:1601/api/v1.3/autocomplete/detected"
-H "Content-Type: application/json" \
-H "Authorization: Bearer <JWT>"

P4 Search responds with:

    {
      "status": {
        "code": 200,
        "message": "OK"
      },
      "data": [
        "total": 39
      ]
    }

### If a request fails

<error code>:

- 400 DSL term error or prefix limits.

- 401 Unauthorized

## Clear DSL autocomplete cache

### Summary

Clear all cached DSL values for a term.

DELETE api/v1.3/autocomplete/{term}

### Description

Clear all cached DSL values for the specified term.

### Parameters

Parameter | Description | Required | Type
--- | --- | --- | ---
term | The DSL keyword for which you want autocomplete values. For example, user. | Yes | string

### Example usage

curl -X DELETE --location "http://localhost:1601/api/v1.3/autocomplete/user"
-H "Content-Type: application/json" \
-H "Authorization: Bearer <JWT>"

P4 Search responds with:

    {
      "status": {
        "code": 200,
        "message": "OK"
      }
    }

### If a request fails

<error code>:

- 400 DSL term error or prefix limits.

- 401 Unauthorized

To learn more about the DSL API endpoint, see Access the Swagger REST API.

Your search for returned results