curl --request POST \
--url https://app.gc.ai/api/external/v1/vaults/{id}/archive \
--header 'Authorization: <api-key>'import requests
url = "https://app.gc.ai/api/external/v1/vaults/{id}/archive"
headers = {"Authorization": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
fetch('https://app.gc.ai/api/external/v1/vaults/{id}/archive', 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://app.gc.ai/api/external/v1/vaults/{id}/archive",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <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://app.gc.ai/api/external/v1/vaults/{id}/archive"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.gc.ai/api/external/v1/vaults/{id}/archive")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.gc.ai/api/external/v1/vaults/{id}/archive")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "Vendor SaaS agreements",
"description": "<string>",
"my_role": "owner",
"is_access_controlled": true,
"document_count": 123,
"setup_completed_at": "<string>",
"archived_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}Archive a Vault
Archive a vault. It leaves the default GET /vaults list, stops accepting changes, and cancels any scan waiting for review. Nothing is deleted: POST /vaults/{id}/restore brings it back with its documents and columns intact.
Archiving is idempotent. Archiving a vault that is already archived returns it unchanged.
Archive a vault before deleting it: DELETE /vaults/{id} refuses a live vault.
Requires the owner role in the vault and the organization-level permission to manage vaults.
Requires a user-scoped API key (u:gcai_...). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.
curl --request POST \
--url https://app.gc.ai/api/external/v1/vaults/{id}/archive \
--header 'Authorization: <api-key>'import requests
url = "https://app.gc.ai/api/external/v1/vaults/{id}/archive"
headers = {"Authorization": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
fetch('https://app.gc.ai/api/external/v1/vaults/{id}/archive', 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://app.gc.ai/api/external/v1/vaults/{id}/archive",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <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://app.gc.ai/api/external/v1/vaults/{id}/archive"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.gc.ai/api/external/v1/vaults/{id}/archive")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.gc.ai/api/external/v1/vaults/{id}/archive")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "Vendor SaaS agreements",
"description": "<string>",
"my_role": "owner",
"is_access_controlled": true,
"document_count": 123,
"setup_completed_at": "<string>",
"archived_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"details": {}
}Authorizations
API key for authentication. Format: gcai_xxxxxxxxx
Create API keys in the GC AI app under Settings → API.
Path Parameters
The vault ID
Response
The archived vault
Unique vault identifier
Vault name
"Vendor SaaS agreements"
Vault description, or null if unset
Caller's role in this vault: owner (manage members and settings), editor (add documents and edit extracted data), or viewer (read and annotate). A vault the caller reaches only through organization-wide visibility reports viewer. The role is not the whole story for writes: adding documents also needs the organization-level permission to manage vaults, so a caller can hold editor here and still receive 403 from POST /vaults/{id}/documents.
owner, editor, viewer When true, only vault members can see the vault. When false, any member of the organization with organization-wide vault read can see it.
Documents that have finished scanning in this vault. Documents still being read are not counted yet.
ISO 8601 timestamp when guided setup finished, or null while the vault is still in setup. Documents added to a vault in setup are stored but not scanned until setup finishes. Vaults created through POST /vaults finish setup immediately, so this is always set for them.
ISO 8601 timestamp when the vault was archived, or null while it is live. Archived vaults are hidden from the default list and reject changes until POST /vaults/{id}/restore runs.
ISO 8601 creation timestamp
ISO 8601 last-update timestamp
Was this page helpful?