Skip to main content

Organization API

Settings

Get Settings

GET /api/organization/settings
Returns organization name, branding, notification preferences, and plan details.
curl https://app.thig.ai/api/organization/settings \
  -H "Authorization: Bearer YOUR_API_KEY"

Update Settings

PATCH /api/organization/settings
Requires Admin or Owner role.
curl -X PATCH https://app.thig.ai/api/organization/settings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme Corp", "settings": {"notifications": {"emailDigest": true}}}'

Members

List Members

GET /api/organization/members
Returns all org members with roles and user data.
curl https://app.thig.ai/api/organization/members \
  -H "Authorization: Bearer YOUR_API_KEY"

Update Member Role

PATCH /api/organization/members/{memberId}
Requires Admin or Owner role. Body:
{ "role": "admin" }
Allowed values: admin, member, viewer.
curl -X PATCH https://app.thig.ai/api/organization/members/mem_456 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"role": "admin"}'

Remove Member

DELETE /api/organization/members/{memberId}

Invitations

List Invitations

GET /api/invitations
Requires Admin or Owner. Returns all pending invitations.

Send Invitation

POST /api/invitations
Body:
FieldTypeRequiredDescription
emailstringYesInvitee email
rolestringYesadmin, member, or viewer
messagestringNoPersonal message
curl -X POST https://app.thig.ai/api/invitations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@example.com", "role": "member", "message": "Join our PRD team!"}'

Verify Invitation

GET /api/invitations/verify?token=INVITATION_TOKEN
Public. Check if an invitation token is valid.

Accept Invitation

POST /api/invitations/accept
Body: { "token": "INVITATION_TOKEN" }

Resend Invitation

POST /api/invitations/{invitationId}

Cancel Invitation

DELETE /api/invitations/{invitationId}

Branding

Update Branding

POST /api/organization/branding
Body:
FieldTypeDescription
primaryColorstringHex color (e.g., “#10B981”)
logostringLogo URL or base64
companyNamestringCompany name
POST /api/organization/branding/logo
Send as multipart/form-data with file field. Max 2MB, images only.
curl -X POST https://app.thig.ai/api/organization/branding/logo \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@./logo.png"
Response:
{ "logoUrl": "https://storage.supabase.co/..." }

Custom Domain

Set Domain

POST /api/organization/domain
Body: { "domain": "prd.yourcompany.com" }
curl -X POST https://app.thig.ai/api/organization/domain \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "prd.yourcompany.com"}'

Verify Domain

POST /api/organization/domain/verify
Checks CNAME and TXT DNS records. Rate-limited. Response:
{
  "verified": true,
  "checks": { "cname": true, "txt": true },
  "message": "Domain verified successfully"
}

Billing

Get Billing Info

GET /api/admin/billing
Returns plan details, usage per resource, billing history, and usage trends.

Create Checkout

POST /api/billing/checkout
Body:
FieldTypeRequiredDescription
planIdstringYesPlan to subscribe to
intervalstringYesmonthly or annual
Response:
{ "checkout_url": "https://checkout.dodopayments.com/..." }

Billing Portal

POST /api/billing/portal
Response:
{ "link": "https://portal.dodopayments.com/..." }

Admin Endpoints

Dashboard Stats

GET /api/admin/dashboard
Returns project counts, status breakdown, recent projects, user stats, and activity timeline.

List Org Projects (Admin)

GET /api/admin/projects
Full filtering support — search, status, template, priority, date range, assignee, sort.

Usage Analytics

GET /api/admin/analytics/usage
Query Parameters:
ParameterTypeDescription
userIdstringFilter by user
projectIdstringFilter by project
daysnumberLookback period (7, 30, 90)
templateMetricsbooleanInclude template stats
alertsbooleanInclude usage alerts

Delete All Projects

POST /api/admin/settings/delete-all-projects
Irreversible. Requires Admin or Owner.

Delete Organization

POST /api/admin/settings/delete-organization
Irreversible. Requires Owner.