Summary

There are times when you may want to create a saved query that's similar to an existing one, but with minor differences. Rather than create a new one, you could use the copySavedQuery() GraphQL mutation to make a duplicate and then modify the new one.

Stability Level Preview

Syntax

graphql
copySavedQuery(
      id: string!,
      sourceSearchDomainName: string!,
      targetSearchDomainName: string,
      name: string
   ): CopySavedQueryMutation!

For the input, you'll have to give the identifier of the saved query to copy (click on Show Query above for this). You would also give the new query name, and the name of the repositories or views. See the Input Parameters for more details.

For the results, you can get plenty of information on the saved query you just copied. Primarily, you'll probably want the identifier so you can make changes — otherwise you'll have two saved queries doing the same thing. See the Returned Values section.

Example

Raw
graphql
mutation {
  copySavedQuery(
    id: "abc123",
    sourceSearchDomainName: "humio",
    name: "my_new_savedquery" 
  ) savedQuery { id }
}
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" : "mutation {
  copySavedQuery(
    id: \"abc123\",
    sourceSearchDomainName: \"humio\",
    name: \"my_new_savedquery\" 
  ) savedQuery { id }
}"
}
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" : "mutation {
  copySavedQuery(
    id: \"abc123\",
    sourceSearchDomainName: \"humio\",
    name: \"my_new_savedquery\" 
  ) savedQuery { id }
}"
}
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" : "mutation { ^
  copySavedQuery( ^
    id: \"abc123\", ^
    sourceSearchDomainName: \"humio\", ^
    name: \"my_new_savedquery\"  ^
  ) savedQuery { id } ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation {
  copySavedQuery(
    id: \"abc123\",
    sourceSearchDomainName: \"humio\",
    name: \"my_new_savedquery\" 
  ) savedQuery { id }
}"
}'
    "$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 = "mutation {
  copySavedQuery(
    id: \"abc123\",
    sourceSearchDomainName: \"humio\",
    name: \"my_new_savedquery\" 
  ) savedQuery { id }
}";
$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" : "mutation {
  copySavedQuery(
    id: \"abc123\",
    sourceSearchDomainName: \"humio\",
    name: \"my_new_savedquery\" 
  ) savedQuery { id }
}"
}'''

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" : "mutation {
  copySavedQuery(
    id: \"abc123\",
    sourceSearchDomainName: \"humio\",
    name: \"my_new_savedquery\" 
  ) savedQuery { id }
}"
}
);


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();
Example Responses
Success (HTTP Response Code 200 OK)
json
{
  "data": {
    "copySavedQuery": {
      "id": "def456"
    }
  }
}

Input Parameters

For the input, you'll have to give the unique identifier of the saved query to copy. Click on the Show Query link above the Syntax section for an example of how to get that. You would also give the name of the new saved query, as well as the name of the repository or view where the old one is located and where the new goes.

Table: Input Parameters & Datatypes

Parameter Type Required Default Description
This table contains all input parameters for this mutation.
id string yes   The unique identifier of the saved query to copy.
name string     The name of the new saved query to create. Otherwise, the old name is used. If the same repository or view, (copied) will be appended to name.
sourceSearchDomainName string yes   The name of the repository or view where the saved query to copy is located.
targetSearchDomainName string     The name of the repository or view where to put the new saved query. If not specified, the source location will be used — provided a different, new name is given.

Returned Values

For the returned values, there is only one. You can see it in the table below. However, it uses another datatype (see the second table below).

Table: CopySavedQueryMutation Datatype

ParameterTypeRequiredDefaultStabilityDescription
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: Jun 30, 2025
savedQuerySavedQueryyes Long-TermThe saved query elements. See SavedQuery.

The table below contains information on the sub-datatype used by the only choice of the datatype shown above. It's shown here for your convenience.

Table: SavedQuery Datatype

ParameterTypeRequiredDefaultStabilityDescription
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: Apr 13, 2026
allowedActions[AssetAction]yes Short-TermThe allowed asset actions. See AssetAction . This is a preview and subject to change.
createdInfoAssetCommitMetadata  Long-TermMetadata related to the creation of the saved query. See AssetCommitMetadata.
descriptionstring  Long-TermA description of the saved query.
displayNamestringyes Long-TermThe display name of the saved query.
idstringyes Long-TermThe unique identifier for the saved query.
interactions[QueryBasedWidgetInteraction]yes Long-TermThe interactions of the saved query. See QueryBasedWidgetInteraction.
isStarredbooleanyes Long-TermWhether the saved query has been marked with a star.
labels[string]yes Long-TermThe labels associated with this saved query.
modifiedInfoAssetCommitMetadata  Long-TermMetadata related to the latest modification of the saved query. See AssetCommitMetadata.
namestringyes Long-TermThe name of the saved query.
optionsJSONyes Long-TermOptions related to the saved query, in JSON form. JSON is a scalar.
packagePackageInstallation  Long-TermThe package, if there is one, in which the saved query is included. See PackageInstallation.
packageIdVersionedPackageSpecifier  Long-TermThe unique identifier of the package. VersionedPackageSpecifier is a scalar value.
qualifiedNamestringyes PreviewThe fully qualified reference format, including the view.
queryHumioQueryyes Long-TermThe saved query itself. See HumioQuery.
resourcestringyes Short-TermThe resource identifier for this saved query.
widgetTypestringyes Long-TermThe type of widget used with the saved query.
yamlTemplateYAMLyes Long-TermA yaml formatted string that describes the saved query. YAML is a scalar. This replaced templateYaml starting in LogScale version 1.225.