Get Import Details
curl --request GET \
--url https://api.zerodrift.ai/api/policies/import/{import_id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.zerodrift.ai/api/policies/import/{import_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.zerodrift.ai/api/policies/import/{import_id}', 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.zerodrift.ai/api/policies/import/{import_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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.zerodrift.ai/api/policies/import/{import_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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.zerodrift.ai/api/policies/import/{import_id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zerodrift.ai/api/policies/import/{import_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"import_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending_review",
"rule_count": 3,
"created_at": "2026-01-15T10:30:00Z",
"rules": [
{
"id": "no_misleading_claims",
"type": "AI_SIGNAL",
"name": "No Misleading Claims",
"action": "flag",
"severity": "high",
"confidence": 0.95
},
{
"id": "benchmark_comparison_required",
"type": "AI_SIGNAL",
"name": "Benchmark Comparison Required",
"action": "fix",
"severity": "medium",
"confidence": 0.88,
"suggested_text": "Performance results should be compared to an appropriate benchmark index."
},
{
"id": "risk_disclosure_present",
"type": "REQUIRE_NEAR",
"name": "Risk Disclosure Near Performance Data",
"action": "flag",
"severity": "high",
"confidence": 0.92
}
]
}
{
"error": "Import not found"
}
Custom Policies
Get Import Details
Retrieve details and extracted rules for a specific policy import
GET
/
api
/
policies
/
import
/
{import_id}
Get Import Details
curl --request GET \
--url https://api.zerodrift.ai/api/policies/import/{import_id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.zerodrift.ai/api/policies/import/{import_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.zerodrift.ai/api/policies/import/{import_id}', 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.zerodrift.ai/api/policies/import/{import_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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.zerodrift.ai/api/policies/import/{import_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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.zerodrift.ai/api/policies/import/{import_id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zerodrift.ai/api/policies/import/{import_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"import_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending_review",
"rule_count": 3,
"created_at": "2026-01-15T10:30:00Z",
"rules": [
{
"id": "no_misleading_claims",
"type": "AI_SIGNAL",
"name": "No Misleading Claims",
"action": "flag",
"severity": "high",
"confidence": 0.95
},
{
"id": "benchmark_comparison_required",
"type": "AI_SIGNAL",
"name": "Benchmark Comparison Required",
"action": "fix",
"severity": "medium",
"confidence": 0.88,
"suggested_text": "Performance results should be compared to an appropriate benchmark index."
},
{
"id": "risk_disclosure_present",
"type": "REQUIRE_NEAR",
"name": "Risk Disclosure Near Performance Data",
"action": "flag",
"severity": "high",
"confidence": 0.92
}
]
}
{
"error": "Import not found"
}
Retrieve the full details of a policy import, including all extracted rules and their properties. Use this endpoint to poll for results after submitting an import, and to review rules before activation.
Extraction runs in the background. Small documents are usually
pending_review within seconds;
large documents (hundreds of pages) are extracted in chunks and can stay in processing for
several minutes. Poll until the status is no longer processing.Path Parameters
string
required
The import ID returned from the import endpoint
Response
string
Unique import identifier
string
Import status:
processing, pending_review, no_rules_found, failed, activated, or partially_activatedinteger
Number of extracted rules (present once extraction completes)
string
Error details when status is
failedstring
ISO 8601 timestamp of the import
array
Full list of extracted rules with details
Show rule properties
Show rule properties
string
Rule identifier
string
Rule type:
AI_SIGNAL, REGEX, or REQUIRE_NEARstring
Human-readable rule name
string
Suggested action:
flag (warn only) or fix (suggest replacement text)string
Rule severity:
low, medium, or highnumber
AI confidence score (0-1)
string
Suggested replacement or guidance text (if applicable)
{
"import_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending_review",
"rule_count": 3,
"created_at": "2026-01-15T10:30:00Z",
"rules": [
{
"id": "no_misleading_claims",
"type": "AI_SIGNAL",
"name": "No Misleading Claims",
"action": "flag",
"severity": "high",
"confidence": 0.95
},
{
"id": "benchmark_comparison_required",
"type": "AI_SIGNAL",
"name": "Benchmark Comparison Required",
"action": "fix",
"severity": "medium",
"confidence": 0.88,
"suggested_text": "Performance results should be compared to an appropriate benchmark index."
},
{
"id": "risk_disclosure_present",
"type": "REQUIRE_NEAR",
"name": "Risk Disclosure Near Performance Data",
"action": "flag",
"severity": "high",
"confidence": 0.92
}
]
}
{
"error": "Import not found"
}

