Projects
Project objects, residency defaults, and membership.
A project is the unit of budget, residency, routing policy, and audit. Every inference call must name a project. Keys, templates, RAG collections, and webhooks are scoped to one project.
Object
{
"id": "prj_legal_001",
"object": "eridian.project",
"name": "Legal production",
"region": "eu-west-1",
"routing_policy": "quality_optimized",
"status": "active",
"created_at": 1718400000
}
Create
POST /v1/projects
Authorization: Bearer eridian_sk_...
Content-Type: application/json
Idempotency-Key: create-prj-legal-001
{
"name": "Legal production",
"region": "eu-west-1",
"routing_policy": "quality_optimized",
"features_default": ["pii_redaction", "semantic_cache"]
}
Required scope: governance:manage. Creating a project in a residency the tenant is not entitled to returns HTTP 403 with error.code: residency_not_entitled.
Retrieve and List
GET /v1/projects/prj_legal_001
GET /v1/projects?starting_after=prj_legal_001&limit=20
Authorization: Bearer eridian_sk_...
List responses follow pagination.
Update
PATCH /v1/projects/prj_legal_001
Authorization: Bearer eridian_sk_...
{
"routing_policy": "legal_strict_v2",
"region": "eu-west-1"
}
Region changes after the project has stored Customer Data require dual control. The second approver must hold governance:manage. Until approved, inference continues in the previous region.
Membership
POST /v1/projects/prj_legal_001/members
Authorization: Bearer eridian_sk_...
{
"email": "analyst@geteridian.com",
"role": "operator"
}
| Role | Dashboard | API |
|---|---|---|
owner | Full | All scopes via keys they create |
operator | Inference, usage, templates | No keys:manage unless granted |
auditor | Read-only usage and audit | audit:read, usage:read |
viewer | Read-only dashboards | None |
SSO groups map to these roles via SCIM. See Authentication.
Archive
POST /v1/projects/prj_legal_001/archive
Archived projects reject new inference with HTTP 403 error.code: project_archived. Audit events and evidence exports remain queryable.
Python
from eridian import Eridian
client = Eridian(api_key="eridian_sk_...")
project = client.projects.create(
name="Legal production",
region="eu-west-1",
)
print(project.id)
See Regions for pinning rules and Budgets for monthly ceilings.
Production API credentials are issued with an institution workspace. Contact sales if you need access.