API v1 Reference
Complete REST API reference for Trust Center Admin API v1 with interactive examples and comprehensive endpoint documentation
API v1 Reference
The Trust Center Admin API v1 provides complete programmatic access to manage customer accounts, documents, certifications, access requests, and white-label trust center configurations. Built with REST principles and designed for enterprise-scale integrations.
Quick Start
Authentication
The Admin Center API uses API keys for programmatic access. Browser login is available only through the Admin Center UI and does not issue API bearer tokens.
Create an API key from Admin Center → Integrations → API Keys, store it securely, and pass it as a bearer API key:
API Key Benefits:
- Long-lasting authentication (up to 365 days)
- Role-based permissions (admin, account_manager, content_manager, viewer)
- Perfect for server-to-server integrations
- One-time key display for enhanced security
Authorization header format:
Authorization: Bearer $TRUST_CENTER_API_KEYBase URL
All API endpoints are relative to the admin center domain:
https://app.orbiqhq.com/api/v1/Your First Request
Test your authentication by listing customer accounts:
curl -H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
-H "Content-Type: application/json" \
https://app.orbiqhq.com/api/v1/accountsAll Endpoints
Every operation in the v1 API, grouped by resource. This list is generated from the OpenAPI specifications, so it stays complete as endpoints are added.
Access Requests
GET /access-requests— List all access requestsPATCH /access-requests/{id}— Update access request status
Accounts
GET /accounts— List accountsPOST /accounts— Create accountGET /accounts/{id}— Get account detailsPATCH /accounts/{id}— Update accountDELETE /accounts/{id}— Delete accountGET /accounts/{id}/documents— Get account documentsPATCH /accounts/{id}/documents— Update account document accessGET /accounts/{id}/nda-acceptances— Get account NDA acceptances
Activity
GET /activity/{entityType}/{id}— List content activity
Analytics
GET /analytics— Get analytics data
Ask
POST /ask— Create ask requestGET /ask/{id}— Get ask response by ID
Authentication
POST /accept-invitation— Accept an invitation using token and passwordPOST /login— API login disabledGET /logout— Logout redirectPOST /logout— User logoutPOST /request-password— Request password reset emailPOST /reset-password— Reset password with tokenGET /signup— Get signup configurationPOST /signup— Create user account
Brand
GET /brand— Get brand settingsPATCH /brand— Update brand settingsPUT /brand/{filetype}— Upload a brand assetDELETE /brand/{filetype}— Delete a brand assetPUT /brand/logo— Upload brand logoDELETE /brand/logo— Remove brand logoGET /watermark— Get watermark configurationPUT /watermark— Update watermark configuration
Certifications
GET /certifications— List certificationsPOST /certifications— Create certification metadataGET /certifications/{id}— Get certification detailsPATCH /certifications/{id}— Update certification metadataDELETE /certifications/{id}— Delete certificationPUT /certifications/{id}/{filetype}— Upload certification filePUT /certifications/{id}/schedule— Schedule a certificationDELETE /certifications/{id}/schedule— Cancel certification publicationGET /certifications/templates— List certification templates
Contacts
GET /contacts— List all contactsPOST /contacts— Create a new contactGET /contacts/{id}— Get contact detailsPATCH /contacts/{id}— Update contact informationDELETE /contacts/{id}— Delete a contactGET /contacts/{id}/documents— List documents for a contactPATCH /contacts/{id}/documents— Update shared documents for a contactPOST /contacts/{id}/magic-link— Send contact magic link
Custom Fields
GET /custom-fields— List custom field templatesPOST /custom-fields— Create a custom field templateGET /custom-fields/{id}— Get a custom field templatePUT /custom-fields/{id}— Replace a custom field templatePATCH /custom-fields/{id}— Update parts of a custom field templateDELETE /custom-fields/{id}— Delete a custom field template
Documents
GET /documents— List documentsPOST /documents— Create document metadataGET /documents/{id}— Get document detailsPATCH /documents/{id}— Update document metadataDELETE /documents/{id}— Delete documentGET /documents/{id}/assets/{fileId}— Download a document assetPUT /documents/{id}/file— Upload document filePUT /documents/{id}/schedule— Schedule a documentDELETE /documents/{id}/schedule— Cancel document publicationPOST /documents/{id}/source-sync— Sync a document from its sourcePATCH /documents/{id}/versioning— Toggle document versioningPOST /documents/{id}/versions— Create a new document versionPATCH /documents/{id}/versions/{versionId}— Update document version statusPOST /documents/{id}/versions/{versionId}/activate— Activate a published document versionPUT /documents/{id}/versions/{versionId}/schedule— Schedule a document versionDELETE /documents/{id}/versions/{versionId}/schedule— Cancel document version publicationGET /documents/templates— List document templates
Feedback
POST /feedback— Submit feedback
Imports
GET /imports— List importsPOST /imports— Create an importGET /imports/{id}— Get an importPATCH /imports/{id}— Update import defaultsPOST /imports/{id}/cancel— Cancel an importPOST /imports/{id}/commit— Commit an importPOST /imports/{id}/dismiss— Dismiss an importPOST /imports/{id}/prepare— Prepare an importGET /imports/active— List active imports
Integrations
GET /integrations/api-keys— List API keysPOST /integrations/api-keys— Create API keyDELETE /integrations/api-keys— Delete API keyGET /integrations/apps— Get integration app statusesPOST /integrations/auth— Create integration auth sessionDELETE /integrations/auth— Disconnect integrationPOST /integrations/confluence— List Confluence itemsGET /integrations/confluence/authorized-assets— List authorized Confluence assetsPOST /integrations/confluence/authorized-assets— Update authorized Confluence assetsPOST /integrations/confluence/export— Import a Confluence page (Confluence export)POST /integrations/confluence/sync— Trigger Confluence manual syncPOST /integrations/docusign/templates— List DocuSign templatesPOST /integrations/google-docs— List Google Drive itemsGET /integrations/google-docs/authorized-files— List authorized Google Drive filesPOST /integrations/google-docs/authorized-files— Replace authorized Google Drive filesPOST /integrations/google-docs/export— Import a Google Drive document (Drive export)POST /integrations/google-docs/sync— Trigger Google Docs manual syncPOST /integrations/notion— List Notion itemsPOST /integrations/notion/database-properties— Load Notion database propertiesPOST /integrations/notion/export— Import a Notion page (export from Notion)POST /integrations/notion/sync— Trigger Notion manual syncPOST /integrations/slack/commands— Receive Slack slash commandsPOST /integrations/slack/events— Receive Slack eventsPOST /integrations/slack/interactions— Receive Slack interactions
Knowledge Base
GET /knowledge-base— List knowledge base itemsPOST /knowledge-base— Create knowledge base itemGET /knowledge-base/{id}— Get Q&A item detailsPATCH /knowledge-base/{id}— Update Q&A itemDELETE /knowledge-base/{id}— Delete Q&A item
NDA Acceptances
GET /nda-acceptances— List NDA acceptancesGET /nda-acceptances/{id}— Get NDA acceptanceGET /nda-acceptances/{id}/file— Download signed NDAPOST /nda-acceptances/{id}/revoke— Revoke NDA acceptance
NDA Templates
GET /nda-templates— List NDA templatesPOST /nda-templates— Create NDA templateGET /nda-templates/{id}— Get NDA templatePATCH /nda-templates/{id}— Update NDA templateDELETE /nda-templates/{id}— Delete NDA templatePOST /nda-templates/{id}/versions— Create a new NDA template versionPATCH /nda-templates/{id}/versions/{versionId}— Update NDA template versionPOST /nda-templates/{id}/versions/{versionId}/activate— Activate an NDA template version
Settings
GET /settings— Get tenant settingsPATCH /settings— Update tenant settings
Subprocessors
GET /subprocessors— List subprocessorsPOST /subprocessors— Create subprocessor metadataGET /subprocessors/{id}— Get subprocessorPATCH /subprocessors/{id}— Update subprocessorDELETE /subprocessors/{id}— Delete subprocessorPUT /subprocessors/{id}/badge— Upload badgeDELETE /subprocessors/{id}/badge— Delete badgePUT /subprocessors/{id}/schedule— Schedule a subprocessorDELETE /subprocessors/{id}/schedule— Cancel subprocessor publicationGET /subprocessors/templates— List subprocessor templates
Tabs
POST /custom-tabs— Create a custom tabGET /custom-tabs/{id}— Get a custom tabPATCH /custom-tabs/{id}— Update a custom tabDELETE /custom-tabs/{id}— Delete a custom tabGET /custom-tabs/new— List custom tab resourcesGET /tabs— List Trust Center tabsPATCH /tabs/{id}— Update a tab row
Trusted By
GET /trusted-by— List Trusted By entriesPOST /trusted-by— Create Trusted By metadataGET /trusted-by/{id}— Get Trusted By entryPATCH /trusted-by/{id}— Update Trusted By entryDELETE /trusted-by/{id}— Delete Trusted By entryPUT /trusted-by/{id}/badge— Upload Trusted By badgeDELETE /trusted-by/{id}/badge— Delete Trusted By badge
Update Classifications
POST /updates/classifications— Create update classificationPATCH /updates/classifications/{id}— Update update classification
Update Templates
GET /updates/templates— List update templatesPOST /updates/templates— Create update templateGET /updates/templates/{id}— Get update templatePATCH /updates/templates/{id}— Update update template
Updates
GET /updates— List updatesPOST /updates— Create updateGET /updates/{id}— Get updatePATCH /updates/{id}— Update updateDELETE /updates/{id}— Delete updatePOST /updates/{id}/archive— Archive updatePOST /updates/{id}/publish— Publish updatePOST /updates/{id}/revert-to-draft— Revert update to draftPOST /updates/{id}/schedule— Schedule updatePOST /updates/{id}/send-now— Send published update nowPOST /updates/{id}/test— Send test update emailGET /updates/options— Load update creation optionsGET /updates/options/{kind}— List update audience optionsGET /updates/subscribers— List update subscribers
Users
GET /users— List usersPOST /users— Invite userGET /users/{id}— Get user profilePATCH /users/{id}— Update user profileDELETE /users/{id}— Delete userPOST /users/{id}/invite— Re-send user invitation
Variants
GET /variants— List variantsPOST /variants— Create a variantGET /variants/{id}— Get a variantPATCH /variants/{id}— Update a variantDELETE /variants/{id}— Delete a variantPOST /variants/{id}/options— Create a variant optionPATCH /variants/{id}/options/{optionId}— Update a variant optionDELETE /variants/{id}/options/{optionId}— Delete a variant option
Response Format
All API responses follow a consistent structure:
Success Response (Single Resource)
{
"success": true,
"data": {
"account": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Acme Corp",
"review_status": "completed"
}
}
}Collection Response
{
"accounts": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Acme Corp",
"review_status": "completed"
}
]
}Error Response
{
"error": {
"type": "validation_error",
"message": "The email address provided is not valid",
"param": "email"
}
}HTTP Status Codes
| Code | Meaning | Description |
|---|---|---|
200 | OK | Request successful |
201 | Created | Resource created successfully |
204 | No Content | Successful deletion or update with no response body |
400 | Bad Request | Invalid request parameters |
401 | Unauthorized | Authentication required |
403 | Forbidden | Insufficient permissions |
404 | Not Found | Resource not found |
409 | Conflict | Resource conflict (e.g., duplicate email) |
422 | Unprocessable Entity | Valid syntax but semantic errors |
429 | Too Many Requests | Rate limit exceeded |
500 | Server Error | Server error |
Pagination
List endpoints support cursor-based pagination:
# Get first page
curl -H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
"https://app.orbiqhq.com/api/v1/accounts?limit=50"
# Get next page using cursor
curl -H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
"https://app.orbiqhq.com/api/v1/accounts?limit=50&starting_after=acc_123"Query Parameters:
limit- Number of items to return (max 100, default 20)starting_after- Cursor for paginationending_before- Reverse pagination cursor
Rate Limiting
- Limit: 1000 requests per minute per API key
- Headers: Rate limit info included in response headers
- 429 Response: Includes
Retry-Afterheader with seconds to wait
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200Common Integration Patterns
Error Handling
async function createAccount(accountData) {
try {
const response = await fetch("https://app.orbiqhq.com/api/v1/accounts", {
method: "POST",
headers: {
Authorization: "Bearer " + apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify(accountData),
});
if (!response.ok) {
const error = await response.json();
throw new Error(`API Error: ${error.error.message}`);
}
return await response.json();
} catch (error) {
console.error("Failed to create account:", error.message);
throw error;
}
}Document Upload Workflow
# 1. Create document metadata. `title`, `category` and `access_level` are
# required, and `category` is a category UUID rather than its name.
RESPONSE=$(curl -X POST "https://app.orbiqhq.com/api/v1/documents" \
-H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Privacy Policy",
"category": "550e8400-e29b-41d4-a716-446655440000",
"access_level": "public",
"featured": { "control": false, "resource": true }
}')
DOCUMENT_ID=$(echo $RESPONSE | jq -r '.data.document.id')
# 2. Upload the file. Multipart is simpler; this binary form needs the
# original filename header so the stored file keeps its name.
curl -X PUT "https://app.orbiqhq.com/api/v1/documents/$DOCUMENT_ID/file" \
-H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
-H "X-Original-Filename: privacy-policy.pdf" \
--data-binary @privacy-policy.pdfAccess Request Approval Automation
import requests
api_key = "YOUR_TRUST_CENTER_API_KEY"
def approve_pending_requests():
# Get all pending requests
response = requests.get(
"https://app.orbiqhq.com/api/v1/access-requests",
params={"review_status": "to_review"},
headers={"Authorization": f"Bearer {api_key}"}
)
pending_requests = response.json()["contacts"]
# Auto-approve requests from verified domains
for request in pending_requests:
if request["email"].endswith("@trustedcompany.com"):
requests.patch(
f"https://app.orbiqhq.com/api/v1/access-requests/{request['id']}",
json={"review_status": "approved"},
headers={"Authorization": f"Bearer {api_key}"}
)
print(f"Auto-approved: {request['email']}")White-Label Configuration
# Update trust center branding
curl -X PATCH "https://app.orbiqhq.com/api/v1/brand" \
-H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Acme Trust Center",
"primary_color": "#0066cc",
"deployment_domains": "trust.acme.com",
"footer_text": "© 2025 Acme. All rights reserved."
}'
# Upload custom logo
curl -X PUT "https://app.orbiqhq.com/api/v1/brand/logo" \
-H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F "file=@/path/to/company-logo.png"Development Tools
Testing Your Integration
Use these endpoints to verify your setup:
# Health check
curl -H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
https://app.orbiqhq.com/api/v1/accounts
# Test creating a document
curl -X POST "https://app.orbiqhq.com/api/v1/documents" \
-H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Test Document", "category": "550e8400-e29b-41d4-a716-446655440000", "access_level": "public"}'Webhook Integration
Set up webhooks to receive real-time notifications:
- Account status changes
- Document uploads and approvals
- Access request submissions
- Certification expiry alerts
Bulk Operations
For large-scale operations, use filtering and pagination:
# Process all accounts needing review
curl -H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
"https://app.orbiqhq.com/api/v1/accounts?status=in_review&limit=100"
# Bulk approve access requests
curl -H "Authorization: Bearer $TRUST_CENTER_API_KEY" \
"https://app.orbiqhq.com/api/v1/access-requests?review_status=to_review&account_id=acc_123"Next Steps
Authentication Deep Dive
Learn about API keys, session management, and security best practices
Webhook Integration
Set up real-time notifications for account and document events
Integration Examples
Explore sample implementations and integration patterns
Postman Collection
Download our Postman collection for easy API testing
Ready to dive deeper? Browse the complete endpoint documentation above or start with account management to get familiar with the API patterns.
How is this guide?