Summary

The validateQuery() GraphQL query checks whether a query compiles. If it does not, the query returns error messages and other diagnostic information.

API Stability Short-Term

Syntax

graphql
validateQuery(
      queryString: String!,
      version: LanguageVersionEnum!,
      isLive: Boolean,
      arguments: [QueryArgument!]
   ): QueryValidationResult!

Provide the query string to validate, indicate whether the query is live, specify the language version, and include any query arguments. See Input Parameters for details.

Returns a non-nullable QueryValidationResult object. See Returned Values for more.

Example

Raw
graphql
query {
  validateQuery(queryString:"host=localhost",
                version: legacy, isLive: false)
  {isValid, diagnostics{severity, message, code}}
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "query {
  validateQuery(queryString:\"host=localhost\",
                version: legacy, isLive: false)
  {isValid, diagnostics{severity, message, code}}
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "query {
  validateQuery(queryString:\"host=localhost\",
                version: legacy, isLive: false)
  {isValid, diagnostics{severity, message, code}}
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "query { ^
  validateQuery(queryString:\"host=localhost\", ^
                version: legacy, isLive: false) ^
  {isValid, diagnostics{severity, message, code}} ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "query {
  validateQuery(queryString:\"host=localhost\",
                version: legacy, isLive: false)
  {isValid, diagnostics{severity, message, code}}
}"
}'
    "$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $query = "query {
  validateQuery(queryString:\"host=localhost\",
                version: legacy, isLive: false)
  {isValid, diagnostics{severity, message, code}}
}";
$query =~ s/\n/ /g;
my $json = sprintf('{"query" : "%s"}',$query);
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "query {
  validateQuery(queryString:\"host=localhost\",
                version: legacy, isLive: false)
  {isValid, diagnostics{severity, message, code}}
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "query {
  validateQuery(queryString:\"host=localhost\",
                version: legacy, isLive: false)
  {isValid, diagnostics{severity, message, code}}
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL',
  path: 'graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();

Input Parameters

Provide the query string to validate, indicate whether it is live, specify the language version (see second table below), and any query arguments (see third table).

Table: Input Parameters & Datatypes

Parameter Type Required Default Description
This table contains all input parameters for this query. Since some of the parameters use special datatypes, additional tables for them are included below.
arguments [QueryArgument]     Any argument of the query. See table below.
isLive Boolean     Whether query is live.
queryString String yes   The query string.
version LanguageVersionEnum yes   The version of the LogScale query language to use. See table below.

This enum specifies the language version to use when executing the query.

The other special datatype is for providing any query arguments, which are given in name and value pairs — as you can see in the table below:

Table: QueryArgument Input Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
Some input parameters may be required, as indicated in the Required column. For return values, this indicates that you are assured a value if the field is requested for the results. 
Table last updated: Oct 14, 2026 
nameStringyes Preview The name of the query argument.
valueStringyes Preview The value for the query argument.

Returned Values

Returns a non-nullable QueryValidationResult object. The table below lists all fields:

Table: QueryValidationResult Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
Some input parameters may be required, as indicated in the Required column. For return values, this indicates that you are assured a value if the field is requested for the results. 
Table last updated: Oct 14, 2026 
diagnosticsQueryDiagnosticyes Short-Term A diagnostic message from query validation. See QueryDiagnostic. This is a preview for internal testing and subject to change.
isValidBooleanyes Short-Term Whether query is valid. For internal testing.

The QueryValidationResult type contains QueryDiagnostic objects. For reference, the QueryDiagnostic datatype table is included here:

Table: QueryDiagnostic Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
Some input parameters may be required, as indicated in the Required column. For return values, this indicates that you are assured a value if the field is requested for the results. 
Table last updated: Oct 14, 2026 
codeStringyes Short-Term The code returned for the diagnostic. This is a preview for internal testing.
messageStringyes Short-Term The message for the query diagnostic. This is a preview for internal testing.
severitySeverityyes Short-Term The severity of the diagnostic. See Severity.