curl --request GET \
--url https://api.merchantops.ai/api/products/{product_key}/variants/keysimport requests
url = "https://api.merchantops.ai/api/products/{product_key}/variants/keys"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.merchantops.ai/api/products/{product_key}/variants/keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.merchantops.ai/api/products/{product_key}/variants/keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.merchantops.ai/api/products/{product_key}/variants/keys"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.merchantops.ai/api/products/{product_key}/variants/keys")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.merchantops.ai/api/products/{product_key}/variants/keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}List Variant Keys
Return up to VARIANT_KEYS_HARD_CAP variant keys matching the filter.
Backs “Select all N matching” on the variants page. Accepts the SAME
q / property_filter as GET / — parsed by the same helper, so
the materialized set is exactly the visible rows — and deliberately NO
sort_by / sort_dir: order never changes the matching set.
Shape mirrors GET /api/products/keys:
{"keys": [...], "total": int, "truncated": bool} — total is the
true count, truncated is true when it exceeds the cap.
Authentication Required: Requires variant:read permission.
curl --request GET \
--url https://api.merchantops.ai/api/products/{product_key}/variants/keysimport requests
url = "https://api.merchantops.ai/api/products/{product_key}/variants/keys"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.merchantops.ai/api/products/{product_key}/variants/keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.merchantops.ai/api/products/{product_key}/variants/keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.merchantops.ai/api/products/{product_key}/variants/keys"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.merchantops.ai/api/products/{product_key}/variants/keys")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.merchantops.ai/api/products/{product_key}/variants/keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Path Parameters
Query Parameters
Repeatable: key:value. Filters by properties. = value.
Case-insensitive substring match on variant key, name, color, size, width, or vendor color code.
Cookies
Response
Successful Response
The response is of type Response List Variant Keys Api Products Product Key Variants Keys Get · object.