← Back to HomeDeveloper
API Reference
Integrate OPINIS sentiment analysis into your applications. All endpoints return JSON. Rate limits depend on your plan tier.
Authentication
All API endpoints require an API key passed via the X-API-Key header.
curl -X POST https://api.pulsesenti.com/api/v1/analyze \
-H "Content-Type: application/json" \
-H "X-API-Key: pk_live_your_api_key_here" \
-d '{"text": "This product is amazing!"}'Generate API keys from your Dashboard → API Keys.
Base URL
https://api.pulsesenti.com/api/v1
Endpoints
Analysis
POST
/analyzeAnalyze a single text for sentiment, emotions, keywords, and sentence-level breakdown.
Auth:API Key
Request Body
{
"text": "This product is incredible!",
"context": { // optional
"typingStatus": "enthusiastic"
}
}Response
{
"data": {
"id": "uuid",
"score": 92,
"label": "positive",
"confidence": 0.97,
"summary": "Highly positive sentiment...",
"emotions": {
"joy": 88,
"anger": 2,
"fear": 0,
"surprise": 15
},
"keywords": [
{ "word": "incredible", "sentiment": 95 }
],
"sentences": [
{ "text": "This product is incredible!", "sentiment": 92 }
]
},
"meta": { "fromCache": false }
}POST
/analyze/batchUpload a CSV file for bulk sentiment analysis. The file should have a 'text' column.
Auth:API Key
Request Body
Content-Type: multipart/form-data file: your_reviews.csv projectId: "uuid" (optional)
Response
{
"data": {
"jobId": "uuid",
"rowCount": 150,
"status": "queued"
}
}GET
/analyze/batch/:jobIdCheck the status and results of a batch analysis job.
Auth:API Key
Response
{
"data": {
"id": "uuid",
"status": "completed",
"progress": 100,
"results": [ ... ]
}
}History
GET
/analyses?page=1&limit=20Retrieve your analysis history with pagination.
Auth:API Key
Response
{
"data": [ { "id": "...", "inputText": "...", "score": 85, ... } ],
"meta": { "page": 1, "limit": 20, "total": 142, "pages": 8 }
}DELETE
/analyses/:idDelete a specific analysis from your history.
Auth:API Key
Response
{ "data": { "deleted": true } }Projects
GET
/projectsList all your projects.
Auth:API Key
Response
{ "data": [ { "id": "uuid", "name": "Support Tickets", ... } ] }POST
/projectsCreate a new project.
Auth:API Key
Request Body
{ "name": "Q3 Reviews", "description": "Customer reviews from Q3" }Response
{ "data": { "id": "uuid", "name": "Q3 Reviews", ... } }Rate Limits
| Plan | Monthly Limit | Rate Limit | Batch Max |
|---|---|---|---|
| Hobby | 500 | 10 req/min | 100 rows |
| Starter | 10,000 | 30 req/min | 1,000 rows |
| Pro | 500,000 | 100 req/min | 10,000 rows |
| Enterprise | Unlimited | Custom | Custom |
Error Codes
| Code | HTTP | Description |
|---|---|---|
| VALIDATION_ERROR | 400 | Invalid request body or parameters |
| UNAUTHORIZED | 401 | Missing or invalid API key |
| FORBIDDEN | 403 | Key does not have access to this resource |
| NOT_FOUND | 404 | Resource not found |
| RATE_LIMITED | 429 | Too many requests — slow down |
| LIMIT_REACHED | 429 | Monthly usage limit exceeded |
| AI_UNAVAILABLE | 503 | AI providers temporarily unavailable |