Go to the API Tokens tab and click Create New Token. Optionally add a label like "Backend Integration" or "CI/CD Pipeline".
3
Store Securely
Copy the token immediately - it will only be shown once! Store it in your environment variables:
bash
exportSEGGWAT_API_KEY=oat_xxxxxxxxxxxxxxxxxxxxx
Warning
Never commit API tokens to version control. Use environment variables or a secrets manager.
2. Find Your Project ID
Go to your project in the dashboard
Click Settings in the project sidebar
Copy the Project ID (UUID format)
Common Use Cases
List All Feedback
Retrieve a paginated list of feedback for a project:
curl -X GET "https://seggwat.com/api/v1/projects/YOUR_PROJECT_ID/feedback?page=1&limit=20"\
-H"X-API-Key: $SEGGWAT_API_KEY"
Filter Feedback by Status
Get only new, unprocessed feedback:
curl -X GET "https://seggwat.com/api/v1/projects/YOUR_PROJECT_ID/feedback?status=New&limit=50"\
-H"X-API-Key: $SEGGWAT_API_KEY"
Search Feedback by Content
Search for specific keywords in feedback messages:
curl -X GET "https://seggwat.com/api/v1/projects/YOUR_PROJECT_ID/feedback?search=bug"\
-H"X-API-Key: $SEGGWAT_API_KEY"
Get Single Feedback Item
Retrieve detailed information about a specific feedback item:
curl -X GET "https://seggwat.com/api/v1/projects/YOUR_PROJECT_ID/feedback/FEEDBACK_ID"\
-H"X-API-Key: $SEGGWAT_API_KEY"
Integration Examples
Slack Notification Bot
Send new feedback to a Slack channel:
javascript
constSEGGWAT_API_KEY=process.env.SEGGWAT_API_KEY;constSLACK_WEBHOOK_URL=process.env.SLACK_WEBHOOK_URL;constPROJECT_ID=process.env.SEGGWAT_PROJECT_ID;asyncfunctionsendNewFeedbackToSlack(){// Get new feedback
constresponse=awaitfetch(`https://seggwat.com/api/v1/projects/${PROJECT_ID}/feedback?status=New&limit=10`,{headers:{'X-API-Key':SEGGWAT_API_KEY}});constdata=awaitresponse.json();// Send each to Slack
for(constfeedbackofdata.feedback){awaitfetch(SLACK_WEBHOOK_URL,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({text:`New ${feedback.type} feedback`,blocks:[{type:'section',text:{type:'mrkdwn',text:`*New ${feedback.type} Feedback*\n${feedback.message}`}},{type:'context',elements:[{type:'mrkdwn',text:`Path: ${feedback.path||'N/A'} | Version: ${feedback.version||'N/A'}`}]}]})});}}// Run every 5 minutes
setInterval(sendNewFeedbackToSlack,5*60*1000);
CSV Export Script
Export feedback to a CSV file for analysis:
python
importcsvimportrequestsimportosSEGGWAT_API_KEY=os.getenv('SEGGWAT_API_KEY')PROJECT_ID=os.getenv('SEGGWAT_PROJECT_ID')defexport_to_csv(filename='feedback.csv'):all_feedback=[]page=1# Fetch all pages
whileTrue:response=requests.get(f'https://seggwat.com/api/v1/projects/{PROJECT_ID}/feedback',headers={'X-API-Key':SEGGWAT_API_KEY},params={'page':page,'limit':100})data=response.json()all_feedback.extend(data['feedback'])ifpage>=data['pagination']['total_pages']:breakpage+=1# Write to CSV
withopen(filename,'w',newline='')ascsvfile:fieldnames=['id','message','type','status','source','created_at','path','version']writer=csv.DictWriter(csvfile,fieldnames=fieldnames)writer.writeheader()forfeedbackinall_feedback:writer.writerow({'id':feedback['id'],'message':feedback['message'],'type':feedback['type'],'status':feedback['status'],'source':feedback['source'],'created_at':feedback['created_at'],'path':feedback.get('path',''),'version':feedback.get('version','')})print(f"Exported {len(all_feedback)} feedback items to {filename}")if__name__=='__main__':export_to_csv()
GitHub Issue Creator
Automatically create GitHub issues from bug reports:
javascript
constSEGGWAT_API_KEY=process.env.SEGGWAT_API_KEY;constGITHUB_TOKEN=process.env.GITHUB_TOKEN;constPROJECT_ID=process.env.SEGGWAT_PROJECT_ID;constGITHUB_OWNER='your-org';constGITHUB_REPO='your-repo';constoctokit=newOctokit({auth:GITHUB_TOKEN});asyncfunctioncreateIssuesFromBugs(){// Get bug-type feedback that's new
constresponse=awaitfetch(`https://seggwat.com/api/v1/projects/${PROJECT_ID}/feedback?type=Bug&status=New`,{headers:{'X-API-Key':SEGGWAT_API_KEY}});constdata=awaitresponse.json();for(constfeedbackofdata.feedback){// Create GitHub issue
awaitoctokit.issues.create({owner:GITHUB_OWNER,repo:GITHUB_REPO,title:`[User Feedback] ${feedback.message.substring(0,60)}...`,body:`
## User Feedback
**Type:** ${feedback.type}
**Source:** ${feedback.source}
**Created:** ${feedback.created_at}
**Path:** ${feedback.path||'N/A'}
**Version:** ${feedback.version||'N/A'}
### Message
${feedback.message}
---
*Feedback ID: ${feedback.id}*
*View in SeggWat: https://seggwat.com/dashboard/feedback/${feedback.id}*
`,labels:['feedback','bug']});console.log(`Created GitHub issue for feedback ${feedback.id}`);}}createIssuesFromBugs();
Error Handling
Always handle API errors gracefully:
javascript
asyncfunctionsafeFetchFeedback(){try{constresponse=awaitfetch(`https://seggwat.com/api/v1/projects/${PROJECT_ID}/feedback`,{headers:{'X-API-Key':SEGGWAT_API_KEY}});if(!response.ok){if(response.status===401){thrownewError('Invalid API key');}else if(response.status===403){thrownewError('Access denied to this project');}else if(response.status===404){thrownewError('Project not found');}thrownewError(`API error: ${response.status}`);}returnawaitresponse.json();}catch(error){console.error('Failed to fetch feedback:',error.message);returnnull;}}
Rate Limits
The SeggWat API currently enforces the following rate limits:
Feedback endpoints: 20 requests per minute per IP
Health endpoints: 300 requests per minute per IP
If you exceed these limits, you'll receive a 429 Too Many Requests response.