Access API
The Access API enables AI systems to request governed access to datasets, ensuring compliance with data holder policies and automatically generating evidence.
API endpoints
Request Access
POST https://api.xase.ai/v1/access
# Request Body
{
"dataset_id": "dataset_medical_records_2025",
"purpose": "model-training",
"model_id": "diagnostic-model-v2",
"duration": "30d",
"metadata": {
"project": "Medical Diagnosis Improvement",
"requester_notes": "Training on anonymized patient data"
}
}
# Response (200 OK)
{
"session_id": "sess_7f6e5d4c",
"dataset_id": "dataset_medical_records_2025",
"status": "ACTIVE",
"created_at": "2026-01-15T14:30:00Z",
"expires_at": "2026-02-14T14:30:00Z",
"policy_id": "policy_medical_research",
"policy_version": "1.2"
}This endpoint initiates a new access request and performs policy evaluation.
If approved, a new session is created and returned.
If rejected, an error response is returned with the specific policy violation.
Get Access Status
GET https://api.xase.ai/v1/access/{session_id}
# Response (200 OK)
{
"session_id": "sess_7f6e5d4c",
"dataset_id": "dataset_medical_records_2025",
"status": "ACTIVE", // ACTIVE, PENDING, EXPIRED, REVOKED
"created_at": "2026-01-15T14:30:00Z",
"expires_at": "2026-02-14T14:30:00Z",
"usage_stats": {
"records_accessed": 12547,
"operations_performed": 89,
"last_access": "2026-01-15T16:45:23Z"
}
}List Access Sessions
GET https://api.xase.ai/v1/access?dataset_id=dataset_medical_records_2025&status=ACTIVE
# Query Parameters
# dataset_id (optional) - Filter by dataset ID
# status (optional) - Filter by status (ACTIVE, PENDING, EXPIRED, REVOKED)
# created_after (optional) - Filter by creation date
# created_before (optional) - Filter by creation date
# limit (optional) - Limit results (default: 20, max: 100)
# offset (optional) - Pagination offset
# Response (200 OK)
{
"data": [
{
"session_id": "sess_7f6e5d4c",
"dataset_id": "dataset_medical_records_2025",
"status": "ACTIVE",
"created_at": "2026-01-15T14:30:00Z",
"expires_at": "2026-02-14T14:30:00Z"
},
{
"session_id": "sess_8g7h6i5j",
"dataset_id": "dataset_medical_records_2025",
"status": "ACTIVE",
"created_at": "2026-01-10T09:15:00Z",
"expires_at": "2026-02-09T09:15:00Z"
}
],
"pagination": {
"total": 5,
"limit": 20,
"offset": 0,
"has_more": false
}
}Terminate Access
DELETE https://api.xase.ai/v1/access/{session_id}
# Request Body (optional)
{
"reason": "Training completed early"
}
# Response (200 OK)
{
"session_id": "sess_7f6e5d4c",
"status": "TERMINATED",
"terminated_at": "2026-01-20T11:42:17Z",
"reason": "Training completed early"
}Error responses
Policy Violation
{
"error": {
"type": "policy_violation",
"message": "Access denied due to policy violation",
"details": {
"policy_id": "policy_medical_research",
"policy_version": "1.2",
"violations": [
{
"rule": "allowed_models",
"message": "Model 'research-v3' is not in the allowed list: ['research-v1', 'research-v2']"
}
]
},
"request_id": "req_d4e5f6g7"
}
}Approval Required
{
"error": {
"type": "approval_required",
"message": "This access request requires explicit approval",
"details": {
"policy_id": "policy_medical_research",
"policy_version": "1.2",
"approval_request_id": "approval_e5f6g7h8",
"approvers": ["data_admin@hospital.org"],
"status": "PENDING"
},
"request_id": "req_d4e5f6g7"
}
}When approval is required, check the approval status using GET /v1/access/approvals/{approval_request_id}
Resource Not Found
{
"error": {
"type": "not_found",
"message": "Session not found",
"details": {
"session_id": "sess_not_exists"
},
"request_id": "req_d4e5f6g7"
}
}Validation Error
{
"error": {
"type": "validation_error",
"message": "Validation failed",
"details": {
"fields": [
{
"field": "duration",
"message": "Invalid duration format. Use format like '30d', '24h', '2w'"
},
{
"field": "purpose",
"message": "Purpose is required"
}
]
},
"request_id": "req_d4e5f6g7"
}
}SDK usage
Python SDK
import xase
client = xase.Client(api_key="sk_...")
# Request access
try:
session = client.access(
dataset="medical-records-2024",
purpose="model-training",
model_id="diagnostic-model-v2",
duration="30d",
metadata={
"project": "Medical Diagnosis Improvement",
"requester_notes": "Training on anonymized patient data"
}
)
print(f"Access granted! Session ID: {session.id}")
print(f"Expires at: {session.expires_at}")
except xase.PolicyViolationError as e:
print(f"Access denied: {e.message}")
for violation in e.violations:
print(f"- {violation.rule}: {violation.message}")
except xase.ApprovalRequiredError as e:
print(f"Approval required: {e.message}")
print(f"Approval request ID: {e.approval_request_id}")
print(f"Check status later with: client.get_approval_status('{e.approval_request_id}')")Managing Access
# Get access session details
session = client.get_session("sess_7f6e5d4c")
print(f"Status: {session.status}")
print(f"Records accessed: {session.usage_stats.records_accessed}")
# List active sessions
active_sessions = client.list_sessions(status="ACTIVE")
for sess in active_sessions:
print(f"Session {sess.id} for {sess.dataset_id}")
# Terminate session when done
client.terminate_session(
session_id="sess_7f6e5d4c",
reason="Training completed"
)Next steps
© 2025 Xasefounders@xase.ai
