Skip to main content

Webhooks & Integrations API

Outgoing Webhooks

Configure webhooks to notify external systems of platform events.

List Webhooks

GET /api/admin/webhooks

Create Webhook

POST /api/admin/webhooks
Body:
FieldTypeRequiredDescription
namestringYesWebhook name
urlstringYesEndpoint URL
eventsstring[]YesEvents to subscribe to
secretstringNoHMAC signing secret
isActivebooleanNoActive state (default: true)
Available Events:
  • project.created, project.updated, project.deleted
  • prd.generated, prd.updated
  • member.added, member.removed
  • And more from WEBHOOK_EVENT_CATEGORIES
curl -X POST https://app.thig.ai/api/admin/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Slack Notifier",
    "url": "https://hooks.slack.com/services/...",
    "events": ["project.created", "prd.generated"],
    "secret": "whsec_mySigningSecret"
  }'

Webhook Payload

When an event fires, your endpoint receives:
{
  "event": "project.created",
  "timestamp": "2026-01-15T10:30:00Z",
  "data": {
    "projectId": "proj_123",
    "name": "Mobile App PRD",
    "status": "DRAFT"
  }
}
The payload includes an HMAC signature in the header specified by signatureHeaderName (default: x-webhook-signature).

Incoming Webhooks

Receive events from external systems.

Receive Webhook

POST /api/webhooks/incoming/{token}
Public endpoint authenticated by unique token. Accepts JSON or form-urlencoded data.
curl -X POST https://app.thig.ai/api/webhooks/incoming/YOUR_TOKEN \
  -H "Content-Type: application/json" \
  -d '{"event": "issue.created", "data": {"title": "Bug report"}}'

Verification Challenge

GET /api/webhooks/incoming/{token}
Responds to verification challenges (Slack-style) by echoing the challenge parameter.

Integrations

Integration Status

GET /api/integrations/status
Returns connection status for all integrations. Response:
{
  "integrations": {
    "notion": {
      "connected": true,
      "workspaceName": "My Workspace",
      "connectedAt": "2026-01-10T08:00:00Z"
    },
    "confluence": {
      "connected": false
    }
  }
}

Notion

Connect

GET /api/integrations/notion/connect
Returns OAuth authorization URL. Redirect user to this URL.

Disconnect

POST /api/integrations/notion/disconnect

Confluence

Connect

GET /api/integrations/confluence/connect
Returns OAuth authorization URL.

Disconnect

POST /api/integrations/confluence/disconnect

Scheduled Exports

List Schedules

GET /api/scheduled-exports
Query: ?projectId= to filter by project. Requires Pro plan.

Create Schedule

POST /api/scheduled-exports
Body:
FieldTypeRequiredDescription
scheduleTypestringYesweekly_digest, on_status_change, custom_cron, one_time
projectIdstringNoSpecific project
cronExpressionstringNoFor custom_cron type
triggerStatusstringNoFor on_status_change type
scheduledAtstringNoFor one_time type (ISO 8601)
timezonestringYesIANA timezone
formatstringYespdf, html, docx, markdown
deliveryMethodstringYesemail or webhook
recipientsstring[]NoEmail recipients
webhookUrlstringNoWebhook endpoint
includeChangelogbooleanNoInclude changelog
customSubjectstringNoEmail subject
customMessagestringNoEmail message
curl -X POST https://app.thig.ai/api/scheduled-exports \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "proj_123",
    "scheduleType": "weekly_digest",
    "format": "pdf",
    "deliveryMethod": "email",
    "recipients": ["team@example.com"],
    "timezone": "America/New_York",
    "includeChangelog": true
  }'

Update Schedule

PATCH /api/scheduled-exports/{exportId}

Delete Schedule

DELETE /api/scheduled-exports/{exportId}

Trigger Manually

POST /api/scheduled-exports/{exportId}/trigger

Other Endpoints

Notifications

GET    /api/notifications
PATCH  /api/notifications/{notificationId}
DELETE /api/notifications/{notificationId}
GET /api/search?q=search+term&mode=keyword
Modes: keyword, semantic, hybrid.

Upload Document

POST /api/upload/document
FormData with file field. Max 10MB. Supports PDF, DOCX, TXT, MD. Returns extracted text and AI analysis.
curl -X POST https://app.thig.ai/api/upload/document \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@requirements.pdf"

Upload Image

POST /api/upload/image
FormData with file and projectId. Max 5MB. Returns storage URL.
curl -X POST https://app.thig.ai/api/upload/image \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@screenshot.png" \
  -F "projectId=proj_123"

Audio Transcription

POST /api/upload/transcribe
FormData with file field. Max 25MB. Feature-flagged. Returns transcribed text and duration.
curl -X POST https://app.thig.ai/api/upload/transcribe \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@meeting-recording.mp3"

Feature Flags

POST /api/feature-flags
GET  /api/feature-flags/enabled
GET  /api/feature-flags/{flagKey}

NPS Feedback

GET  /api/feedback/nps
POST /api/feedback/nps

Health Check

GET /api/health
Public. Returns { status: "ok" } or { status: "degraded" }.

Pricing Plans

GET /api/pricing/plans
Public. Returns active subscription plans with features.

Email Unsubscribe

POST /api/unsubscribe
Token-verified, no login required.