Create a query

Create a query

A metadata query is a POST request to the ​/metadata_queries/execute_read- endpoint, in which the body contains all the parts of the metadata query. Most important here are the from attribute that specifies the template to search for, the ancestor_folder_id to specify the folder to search in, and the query to determine any template fields to search by.

curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \
     -H 'Authorization: Bearer <ACCESS_TOKEN>' \
     -H 'Content-Type: application/json' \
     -d '{
       "from": "enterprise_123456.contractTemplate",
       "query": "amount >= :value",
       "query_params": {
         "value": 100
       },
       "fields": [
         "name",
         "metadata.enterprise_123456.contractTemplate.customerName",
         "metadata.enterprise_123456.contractTemplate.amount" 
       ],
       "ancestor_folder_id": "5555",
       "order_by": [
         {
           "field_key": "amount",
           "direction": "asc"
         }
       ],
       "limit": 100
     }'

For more details about all the available parameters, check out any of our other metadata query guides, or the associated endpoint reference.

Learn more about the query syntax

Response

Any files or folders that match the query are returned in the API response. The body of the response is a JSON object with a list of entries for each file or folder, and a next_marker value that you can use to find the next page of results. Each of the entries will represent the file or folder that matched the query, and only any fields explicitly requested in the field parameter are returned.

{
  "entries":[
    {
      "type": "file",
      "id": "1617554169109",
      "name": "My Contract.docx",
      "metadata":{
        "enterprise_123456":{
          "contractTemplate":{
            "$parent": "file_161753469109",
            "$scope": "enterprise_123456",
            "$template": "contractTemplate",
            "$version":0,
            "customerName":"Phoenix Corp",
            "amount":100
          }
        }
      }
    }
  ],
  "limit": 20,
  "next_marker":"AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff"
}

By default this API returns 20 items per page, but more items can be requested using marker-based pagination.

Learn more about paginating query results