> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fern-docs.skyflow.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fern-docs.skyflow.dev/_mcp/server.

# Execute Query

POST https://%7B%7Bvault_url_identifier%7D%7D.vault.skyflowapis.com/v1/vaults/{vaultID}/query
Content-Type: application/json

Returns records for a valid SQL query. This endpoint \<ul>Can return redacted record values.Supports only the SELECT command.Returns a maximum of 25 records. To return additional records, perform another query using the OFFSET keyword.Can't modify the vault or perform transactions.Can't return tokens.Can't return file download or render URLs.Doesn't support the WHERE keyword with columns using transient tokenization.Doesn't support `?` conditional for columns with column-level encryption disabled.\<ul>

Reference: https://fern-docs.skyflow.dev/api/data/query/execute-query

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://%7B%7Bvault_url_identifier%7D%7D.vault.skyflowapis.com` (Production, default)
- `https://%7B%7Bvault_url_identifier%7D%7D.vault.skyflowapis-preview.com` (Sandbox)

## Request

### Path parameters

- `vaultID` (string, required) — ID of the vault.

### Body (application/json)

This endpoint expects an execute_query_response.

- `query` (string, optional) — The SQL query to execute.Supported commands: SELECT Supported operators: > \< = AND OR NOT LIKE ILIKE NULL NOT NULL Supported keywords: FROM JOIN INNER JOIN LEFT OUTER JOIN LEFT JOIN RIGHT OUTER JOIN RIGHT JOIN FULL OUTER JOIN FULL JOIN OFFSET LIMIT WHERE Supported functions: AVG() SUM() COUNT() MIN() MAX() REDACTION()&#x20;

## Response

### 200

A successful response.

- `records` (list of field_records, optional) — Records returned by the query.

## Errors

### 400 Bad Request Error

Returned when the request doesn't match the schema, such as not including required fields.

- `error` (ErrorResponseError, required)

### 401 Unauthorized Error

Returned when the request doesn't match the schema, such as not including required fields.

- `string`

### 500 Internal Server Error

An unexpected error response.

- `error` (ErrorResponseError, required)

## Types

### field_records

Record values and tokens.

- `fields` (map from string to any, optional) — Fields and values for the record. For example, `{'field_1':'value_1', 'field_2':'value_2'}`.
- `tokens` (map from string to any, optional) — Fields and tokens for the record. For example, `{'field_1':'token_1', 'field_2':'token_2'}`.

### ErrorResponseError

- `grpc_code` (integer, required) — gRPC status codes. See https://grpc.io/docs/guides/status-codes.
- `http_code` (integer, required) — HTTP status codes. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status.
- `http_status` (string, required) — HTTP status message.
- `message` (string, required)
- `details` (list of map from string to any, optional)

## Examples

**Request**

```json
{
  "query": "select * from opportunities where id=\"01010000ade21cded569d43944544ec6\""
}
```

**Response**

```json
{
  "records": [
    {
      "fields": {
        "Estimated Value": 10000,
        "Expected Close Date": "2017-07-12",
        "Opportunity Name": "BPS Pilot",
        "Owner": {
          "email": "kat+collab15@skyflow.com",
          "id": "usrijG9SC4EQlq5cm",
          "name": "Jess Patel"
        },
        "Priority": "Medium",
        "Proposal Deadline": "2017-06-14",
        "Status": "Qualification"
      }
    },
    {
      "fields": {
        "Estimated Value": 24791,
        "Expected Close Date": "2017-07-07",
        "Opportunity Name": "BPS second use case",
        "Owner": {
          "email": "kat+collab36@skyflow.com",
          "id": "usrGqHsNLhH41Q91M",
          "name": "Sandy Hagen"
        },
        "Priority": "Very Low Deprioritize",
        "Status": "Proposal"
      }
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://{{vault_url_identifier}}.vault.skyflowapis.com/v1/vaults/a451b783713e4424a7c761bb7bbc84ea/query"

payload = { "query": "select * from opportunities where id=\"01010000ade21cded569d43944544ec6\"" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{{vault_url_identifier}}.vault.skyflowapis.com/v1/vaults/a451b783713e4424a7c761bb7bbc84ea/query';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"query":"select * from opportunities where id=\"01010000ade21cded569d43944544ec6\""}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://{{vault_url_identifier}}.vault.skyflowapis.com/v1/vaults/a451b783713e4424a7c761bb7bbc84ea/query"

	payload := strings.NewReader("{\n  \"query\": \"select * from opportunities where id=\\\"01010000ade21cded569d43944544ec6\\\"\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://{{vault_url_identifier}}.vault.skyflowapis.com/v1/vaults/a451b783713e4424a7c761bb7bbc84ea/query")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"query\": \"select * from opportunities where id=\\\"01010000ade21cded569d43944544ec6\\\"\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://{{vault_url_identifier}}.vault.skyflowapis.com/v1/vaults/a451b783713e4424a7c761bb7bbc84ea/query")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"select * from opportunities where id=\\\"01010000ade21cded569d43944544ec6\\\"\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://{{vault_url_identifier}}.vault.skyflowapis.com/v1/vaults/a451b783713e4424a7c761bb7bbc84ea/query', [
  'body' => '{
  "query": "select * from opportunities where id=\\"01010000ade21cded569d43944544ec6\\""
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://{{vault_url_identifier}}.vault.skyflowapis.com/v1/vaults/a451b783713e4424a7c761bb7bbc84ea/query");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"query\": \"select * from opportunities where id=\\\"01010000ade21cded569d43944544ec6\\\"\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["query": "select * from opportunities where id=\"01010000ade21cded569d43944544ec6\""] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://{{vault_url_identifier}}.vault.skyflowapis.com/v1/vaults/a451b783713e4424a7c761bb7bbc84ea/query")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```