Endpoints
User
User profile, BYOK API keys, onboarding, and account management
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
User profile, BYOK API keys, onboarding, and account management
GET /api/user/profile
curl https://app.thig.ai/api/user/profile \
-H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch('https://app.thig.ai/api/user/profile', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const profile = await res.json();
PATCH /api/user/profile
| Field | Type | Description |
|---|---|---|
name | string | Display name |
jobTitle | string | Job title |
bio | string | Short bio |
avatar | string | Avatar URL |
preferredStyle | string | Document style preference |
curl -X PATCH https://app.thig.ai/api/user/profile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Jane Smith", "jobTitle": "Product Manager", "preferredStyle": "comprehensive"}'
const res = await fetch('https://app.thig.ai/api/user/profile', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Jane Smith',
jobTitle: 'Product Manager',
preferredStyle: 'comprehensive'
})
});
const data = await res.json();
GET /api/user/api-keys
POST /api/user/api-keys
| Field | Type | Required | Description |
|---|---|---|---|
provider | string | Yes | openai, anthropic, or gemini |
key | string | Yes | API key (encrypted before storage) |
name | string | No | Display name |
curl -X POST https://app.thig.ai/api/user/api-keys \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"provider": "openai", "key": "sk-proj-abc123...", "name": "My OpenAI Key"}'
const res = await fetch('https://app.thig.ai/api/user/api-keys', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
provider: 'openai',
key: 'sk-proj-abc123...',
name: 'My OpenAI Key'
})
});
const data = await res.json();
{
"id": "key_123",
"provider": "openai",
"name": "My OpenAI Key",
"createdAt": "2026-01-15T10:30:00Z"
}
DELETE /api/user/api-keys/{keyId}
PATCH /api/user/timezone
{ "timezone": "America/New_York" }
curl -X PATCH https://app.thig.ai/api/user/timezone \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"timezone": "America/New_York"}'
const res = await fetch('https://app.thig.ai/api/user/timezone', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ timezone: 'America/New_York' })
});
const data = await res.json();
GET /api/user/onboarding
{
"completed": true,
"completedAt": "2026-01-15T10:30:00Z",
"preferences": { ... }
}
POST /api/user/onboarding
| Field | Type | Required | Description |
|---|---|---|---|
fullName | string | Yes | Full name |
jobTitle | string | Yes | Job title |
company | string | Yes | Company name |
useCase | string | Yes | Primary use case |
teamSize | string | Yes | Team size |
prdStyle | string | Yes | Preferred PRD style |
interests | string[] | Yes | Features of interest |
createOrg | boolean | No | Create organization |
orgName | string | No | Organization name |
inviteEmails | string[] | No | Emails to invite |
curl -X POST https://app.thig.ai/api/user/onboarding \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"fullName": "Jane Smith",
"jobTitle": "Product Manager",
"company": "Acme Corp",
"useCase": "Product requirements",
"teamSize": "medium",
"prdStyle": "comprehensive",
"interests": ["ai-chat", "templates", "exports"]
}'
const res = await fetch('https://app.thig.ai/api/user/onboarding', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
fullName: 'Jane Smith',
jobTitle: 'Product Manager',
company: 'Acme Corp',
useCase: 'Product requirements',
teamSize: 'medium',
prdStyle: 'comprehensive',
interests: ['ai-chat', 'templates', 'exports']
})
});
const data = await res.json();
GET /api/user/onboarding-progress
POST /api/user/activity
GET /api/user/data-export
curl https://app.thig.ai/api/user/data-export \
-H "Authorization: Bearer YOUR_API_KEY" \
-o my-data.json
const res = await fetch('https://app.thig.ai/api/user/data-export', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const blob = await res.blob();
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'my-data.json';
a.click();
DELETE /api/user/delete-account
{ "confirmEmail": "jane@example.com" }