Download OpenAPI specification:
AI-driven survey system for crowdfunding projects.
This API enables creators to build surveys through natural language conversations with AI agents, collect potential backer data, and integrate with LINE for engagement.
Create a new survey draft. The survey starts in 'draft' status and can be edited before publishing.
| title required | string [ 1 .. 200 ] characters Survey title |
| description | string <= 2000 characters Survey description |
| projectUrl | string <uri> URL of the crowdfunding project (for AI to scrape info) |
{- "title": "智慧水壺募資前測問卷",
- "description": "幫助我們了解您對智慧水壺的需求"
}{- "surveyId": "string",
- "creatorId": "string",
- "title": "string",
- "description": "string",
- "questions": [
- {
- "questionId": "string",
- "questionText": "string",
- "questionType": "text",
- "required": true,
- "order": 0,
- "options": [
- "string"
], - "placeholder": "string",
- "minValue": 0,
- "maxValue": 0
}
], - "earlyBirdDeadline": "2019-08-24T14:15:22Z",
- "earlyBirdDescription": "string",
- "mysteryEventConfig": {
- "unlockCondition": "on_completion",
- "thresholdCount": 0,
- "title": "string",
- "description": "string",
- "rewardDetails": { },
- "isUnlocked": true
}, - "lineOaId": "string",
- "status": "draft",
- "totalResponses": 0,
- "itemVersion": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "publishedAt": "2019-08-24T14:15:22Z"
}Get a list of surveys created by the authenticated user.
| status | string (SurveyStatus) Enum: "draft" "active" "closed" Filter by survey status |
| limit | integer [ 1 .. 100 ] Default: 20 Maximum number of results |
| cursor | string Pagination cursor |
{- "surveys": [
- {
- "surveyId": "string",
- "creatorId": "string",
- "title": "string",
- "description": "string",
- "questions": [
- {
- "questionId": "string",
- "questionText": "string",
- "questionType": "text",
- "required": true,
- "order": 0,
- "options": [
- "string"
], - "placeholder": "string",
- "minValue": 0,
- "maxValue": 0
}
], - "earlyBirdDeadline": "2019-08-24T14:15:22Z",
- "earlyBirdDescription": "string",
- "mysteryEventConfig": {
- "unlockCondition": "on_completion",
- "thresholdCount": 0,
- "title": "string",
- "description": "string",
- "rewardDetails": { },
- "isUnlocked": true
}, - "lineOaId": "string",
- "status": "draft",
- "totalResponses": 0,
- "itemVersion": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "publishedAt": "2019-08-24T14:15:22Z"
}
], - "nextCursor": "string"
}Get detailed information about a specific survey.
| surveyId required | string Survey ID |
{- "surveyId": "string",
- "creatorId": "string",
- "title": "string",
- "description": "string",
- "questions": [
- {
- "questionId": "string",
- "questionText": "string",
- "questionType": "text",
- "required": true,
- "order": 0,
- "options": [
- "string"
], - "placeholder": "string",
- "minValue": 0,
- "maxValue": 0
}
], - "earlyBirdDeadline": "2019-08-24T14:15:22Z",
- "earlyBirdDescription": "string",
- "mysteryEventConfig": {
- "unlockCondition": "on_completion",
- "thresholdCount": 0,
- "title": "string",
- "description": "string",
- "rewardDetails": { },
- "isUnlocked": true
}, - "lineOaId": "string",
- "status": "draft",
- "totalResponses": 0,
- "itemVersion": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "publishedAt": "2019-08-24T14:15:22Z"
}Update survey settings. Only available for surveys in 'draft' status. Supports optimistic locking via expectedVersion.
| surveyId required | string Survey ID |
| title | string [ 1 .. 200 ] characters |
| description | string <= 2000 characters |
| earlyBirdDeadline | string or null <date-time> Early bird deadline (null to remove) |
| earlyBirdDescription | string <= 500 characters Early bird offer description |
| lineOaId | string LINE Official Account ID for notifications |
| expectedVersion | integer Expected version for optimistic locking |
{- "title": "Updated Survey Title",
- "description": "New description",
- "expectedVersion": 2
}{- "surveyId": "string",
- "creatorId": "string",
- "title": "string",
- "description": "string",
- "questions": [
- {
- "questionId": "string",
- "questionText": "string",
- "questionType": "text",
- "required": true,
- "order": 0,
- "options": [
- "string"
], - "placeholder": "string",
- "minValue": 0,
- "maxValue": 0
}
], - "earlyBirdDeadline": "2019-08-24T14:15:22Z",
- "earlyBirdDescription": "string",
- "mysteryEventConfig": {
- "unlockCondition": "on_completion",
- "thresholdCount": 0,
- "title": "string",
- "description": "string",
- "rewardDetails": { },
- "isUnlocked": true
}, - "lineOaId": "string",
- "status": "draft",
- "totalResponses": 0,
- "itemVersion": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "publishedAt": "2019-08-24T14:15:22Z"
}Publish the survey to make it available for respondents. Survey must have at least one question.
| surveyId required | string Survey ID |
| expectedVersion | integer Expected version for optimistic locking |
{- "expectedVersion": 0
}{- "surveyId": "string",
- "creatorId": "string",
- "title": "string",
- "description": "string",
- "questions": [
- {
- "questionId": "string",
- "questionText": "string",
- "questionType": "text",
- "required": true,
- "order": 0,
- "options": [
- "string"
], - "placeholder": "string",
- "minValue": 0,
- "maxValue": 0
}
], - "earlyBirdDeadline": "2019-08-24T14:15:22Z",
- "earlyBirdDescription": "string",
- "mysteryEventConfig": {
- "unlockCondition": "on_completion",
- "thresholdCount": 0,
- "title": "string",
- "description": "string",
- "rewardDetails": { },
- "isUnlocked": true
}, - "lineOaId": "string",
- "status": "draft",
- "totalResponses": 0,
- "itemVersion": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "publishedAt": "2019-08-24T14:15:22Z"
}Add a new question to the survey.
| surveyId required | string Survey ID |
| questionText required | string [ 1 .. 500 ] characters Question text |
| questionType required | string (QuestionType) Enum: "text" "textarea" "single_choice" "multiple_choice" "rating" "number" Type of survey question |
| required | boolean Default: false Whether the question is required |
| options | Array of strings Options for choice questions |
| placeholder | string Placeholder text for input fields |
| minValue | number Minimum value for number/rating questions |
| maxValue | number Maximum value for number/rating questions |
{- "questionText": "您希望智慧水壺具備哪些功能?",
- "questionType": "text",
- "required": true
}{- "surveyId": "string",
- "creatorId": "string",
- "title": "string",
- "description": "string",
- "questions": [
- {
- "questionId": "string",
- "questionText": "string",
- "questionType": "text",
- "required": true,
- "order": 0,
- "options": [
- "string"
], - "placeholder": "string",
- "minValue": 0,
- "maxValue": 0
}
], - "earlyBirdDeadline": "2019-08-24T14:15:22Z",
- "earlyBirdDescription": "string",
- "mysteryEventConfig": {
- "unlockCondition": "on_completion",
- "thresholdCount": 0,
- "title": "string",
- "description": "string",
- "rewardDetails": { },
- "isUnlocked": true
}, - "lineOaId": "string",
- "status": "draft",
- "totalResponses": 0,
- "itemVersion": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "publishedAt": "2019-08-24T14:15:22Z"
}Get a list of responses submitted to this survey.
| surveyId required | string Survey ID |
| limit | integer [ 1 .. 200 ] Default: 50 |
| cursor | string |
| hasLineBinding | boolean Filter by LINE binding status |
{- "responses": [
- {
- "responseId": "string",
- "surveyId": "string",
- "email": "string",
- "name": "string",
- "answers": { },
- "lineUserId": "string",
- "isEarlyBird": true,
- "mysteryUnlocked": true,
- "mysteryUnlockType": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "nextCursor": "string"
}Get analytics and statistics for the survey.
| surveyId required | string Survey ID |
{- "surveyId": "string",
- "totalResponses": 0,
- "earlyBirdCount": 0,
- "lineBindingCount": 0,
- "mysteryUnlockedCount": 0,
- "responsesByDate": [
- {
- "date": "2019-08-24",
- "count": 0
}
], - "questionStats": [
- {
- "questionId": "string",
- "questionText": "string",
- "responseCount": 0,
- "optionCounts": {
- "property1": 0,
- "property2": 0
}, - "averageRating": 0
}
]
}Set up or update the mystery event configuration for this survey. Mystery events can be triggered by completion or threshold conditions.
| surveyId required | string Survey ID |
| unlockCondition required | string (UnlockCondition) Enum: "on_completion" "threshold" "both" Mystery event unlock conditions:
|
| thresholdCount | integer >= 1 Required response count for threshold unlock |
| title required | string [ 1 .. 100 ] characters Mystery event title |
| description required | string <= 1000 characters Mystery event description |
required | object Reward configuration details |
{- "unlockCondition": "on_completion",
- "title": "專屬早鳥優惠",
- "description": "感謝您的參與!您將獲得首批支持者專屬 85 折優惠碼",
- "rewardDetails": {
- "type": "discount_code",
- "value": "EARLYBIRD15"
}
}{- "surveyId": "string",
- "creatorId": "string",
- "title": "string",
- "description": "string",
- "questions": [
- {
- "questionId": "string",
- "questionText": "string",
- "questionType": "text",
- "required": true,
- "order": 0,
- "options": [
- "string"
], - "placeholder": "string",
- "minValue": 0,
- "maxValue": 0
}
], - "earlyBirdDeadline": "2019-08-24T14:15:22Z",
- "earlyBirdDescription": "string",
- "mysteryEventConfig": {
- "unlockCondition": "on_completion",
- "thresholdCount": 0,
- "title": "string",
- "description": "string",
- "rewardDetails": { },
- "isUnlocked": true
}, - "lineOaId": "string",
- "status": "draft",
- "totalResponses": 0,
- "itemVersion": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "publishedAt": "2019-08-24T14:15:22Z"
}Get the public survey form for respondents. Includes early bird information if applicable.
| surveyId required | string Survey ID |
{- "surveyId": "string",
- "title": "string",
- "description": "string",
- "questions": [
- {
- "questionId": "string",
- "questionText": "string",
- "questionType": "text",
- "required": true,
- "order": 0,
- "options": [
- "string"
], - "placeholder": "string",
- "minValue": 0,
- "maxValue": 0
}
], - "status": "draft",
- "earlyBirdActive": true,
- "earlyBirdDescription": "string",
- "earlyBirdEndsAt": "2019-08-24T14:15:22Z",
- "hasMysteryEvent": true
}Submit a response to the survey. Requires email and name for contact purposes.
| surveyId required | string Survey ID |
| email required | string <email> Respondent email |
| name required | string [ 1 .. 100 ] characters Respondent name |
required | object Map of question ID to answer value |
{- "email": "user@example.com",
- "name": "王小明",
- "answers": {
- "q1": "我希望有溫度顯示功能",
- "q2": "NT$1000-2000",
- "q3": [
- "跑步機",
- "自行車"
]
}
}{- "responseId": "string",
- "surveyId": "string",
- "isEarlyBird": true,
}Get data for the thank you page after submission. Includes early bird status, mystery event progress, and LINE button info.
| surveyId required | string Survey ID |
| responseId required | string Response ID |
{- "responseId": "string",
- "surveyId": "string",
- "surveyTitle": "string",
- "name": "string",
- "isEarlyBird": true,
- "earlyBirdMessage": "string",
- "hasLineBinding": true,
- "mysteryEvent": {
- "title": "string",
- "unlockCondition": "on_completion",
- "isUnlocked": true,
- "currentCount": 0,
- "thresholdCount": 0,
- "progressPercent": 0,
- "rewardDetails": { }
}
}Get the current status of mystery event for this response.
| surveyId required | string Survey ID |
| responseId required | string Response ID |
{- "responseId": "string",
- "surveyId": "string",
- "isUnlocked": true,
- "unlockType": "completion",
- "mysteryEvent": {
- "title": "string",
- "unlockCondition": "on_completion",
- "isUnlocked": true,
- "currentCount": 0,
- "thresholdCount": 0,
- "progressPercent": 0,
- "rewardDetails": { }
}
}Redirect to LINE Login for OAuth authorization. After authorization, user is redirected back to the callback URL.
| surveyId required | string Survey ID |
| responseId required | string Response ID to bind with LINE account |
| redirectUri | string <uri> Custom redirect URI after LINE auth |
Handle LINE OAuth callback after user authorization. Binds LINE user ID to the response and triggers mystery event if applicable.
| surveyId required | string Survey ID |
| code required | string Authorization code from LINE |
| state required | string State parameter containing response ID and nonce |
| error | string Error code if authorization failed |
| error_description | string Error description |