Complete endpoint reference for v2.0
http://localhost:3001/api
https://app.datapublisher.io/api
Include JWT token in all authenticated requests:
Authorization: Bearer
---
/api/auth)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | /register | Register new user | No |
| POST | /login | Login and get JWT | No |
| POST | /request-code | Request registration code | No |
| GET | /verify-token | Verify JWT token | Yes |
| POST | /logout | Logout (client-side) | Yes |
/api/users)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| GET | /profile | Get user profile | Yes |
| PUT | /profile | Update profile | Yes |
| GET | /subscription | Get subscription info | Yes |
| PUT | /subscription | Update subscription | Yes |
/api/data)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Upload data file | Yes |
| GET | / | List all files | Yes |
| GET | /:id | Get file details | Yes |
| PUT | /:id | Update file | Yes |
| DELETE | /:id | Delete file | Yes |
/api/csv)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | /upload | Upload CSV (multipart) | Yes |
| POST | /parse | Parse CSV content | Yes |
| GET | /preview/:id | Preview CSV data | Yes |
/api/documents)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | /generate | Generate document | Yes |
| GET | /:id | Get document | Yes |
| GET | /:id/download | Download document | Yes |
| DELETE | /:id | Delete document | Yes |
---
/api/email-templates)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Create template | Yes |
| GET | / | List templates | Yes |
| GET | /:id | Get template | Yes |
| PUT | /:id | Update template | Yes |
| DELETE | /:id | Delete template | Yes |
| POST | /:id/clone | Clone template | Yes |
/api/email-campaigns)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Create campaign | Yes |
| GET | / | List campaigns | Yes |
| GET | /:id | Get campaign | Yes |
| PUT | /:id | Update campaign | Yes |
| DELETE | /:id | Delete campaign | Yes |
| POST | /:id/send | Send campaign | Yes |
| GET | /:id/status | Check send status | Yes |
| POST | /:id/pause | Pause sending | Yes |
| POST | /:id/resume | Resume sending | Yes |
| POST | /:id/cancel | Cancel campaign | Yes |
| GET | /:id/analytics | Get analytics | Yes |
/api/email/track)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| GET | /open/:trackingId | Track email open | No |
| GET | /click/:linkId | Track link click | No |
| POST | /reply/:campaignId | Record reply | No |
/api/email/auth)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| GET | /outlook/authorize | Start OAuth flow | Yes |
| GET | /outlook/callback | OAuth callback | No |
| POST | /outlook/token | Exchange code for token | Yes |
| GET | /status | Get connection status | Yes |
| POST | /disconnect | Disconnect account | Yes |
/api/email)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | /send | Send single email | Yes |
| POST | /send-batch | Send batch emails | Yes |
| GET | /sent | List sent emails | Yes |
| GET | /analytics/:id | Email analytics | Yes |
/api/html-email-package)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Create email package | Yes |
| GET | / | List packages | Yes |
| GET | /:id | Get package | Yes |
| DELETE | /:id | Delete package | Yes |
/api/email-publishing-exports)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Create export config | Yes |
| GET | / | List exports | Yes |
| GET | /:id | Get export | Yes |
| PUT | /:id | Update export | Yes |
| DELETE | /:id | Delete export | Yes |
| POST | /:id/execute | Execute export | Yes |
---
/api/google)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| GET | /authorize | Start OAuth | Yes |
| GET | /callback | OAuth callback | No |
| GET | /sheets | List spreadsheets | Yes |
| GET | /sheets/:id | Get sheet data | Yes |
| POST | /sheets/:id/import | Import to CSV | Yes |
| POST | /disconnect | Disconnect account | Yes |
/api/microsoft)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| GET | /authorize | Start OAuth | Yes |
| GET | /callback | OAuth callback | No |
| GET | /workbooks | List workbooks | Yes |
| GET | /workbooks/:id | Get workbook data | Yes |
| POST | /workbooks/:id/import | Import to CSV | Yes |
| POST | /disconnect | Disconnect account | Yes |
/api/sqlserver)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | /connect | Test connection | Yes |
| POST | /query | Execute query | Yes |
| GET | /tables | List tables | Yes |
| POST | /import | Import table to CSV | Yes |
| GET | /connections | List saved connections | Yes |
| DELETE | /connections/:id | Delete connection | Yes |
/api/datasources)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Create data source | Yes |
| GET | / | List sources | Yes |
| GET | /:id | Get source | Yes |
| PUT | /:id | Update source | Yes |
| DELETE | /:id | Delete source | Yes |
| POST | /:id/test | Test connection | Yes |
| POST | /:id/refresh | Refresh data | Yes |
/api/sync)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Create sync schedule | Yes |
| GET | / | List schedules | Yes |
| GET | /:id | Get schedule | Yes |
| PUT | /:id | Update schedule | Yes |
| DELETE | /:id | Delete schedule | Yes |
| POST | /:id/run | Run sync now | Yes |
| GET | /:id/history | Sync history | Yes |
---
/api/word-templates)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Upload template | Yes |
| GET | / | List templates | Yes |
| GET | /:id | Get template | Yes |
| DELETE | /:id | Delete template | Yes |
| POST | /:id/generate | Generate document | Yes |
/api/images)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | /upload | Upload image | Yes |
| GET | / | List images | Yes |
| GET | /:id | Get image | Yes |
| DELETE | /:id | Delete image | Yes |
| GET | /serve/:id | Serve image file | No |
/api/sample-library)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| GET | /templates | List sample templates | Yes |
| GET | /data | List sample data | Yes |
| POST | /import/:id | Import sample | Yes |
/api/domains)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Create domain | Yes |
| GET | / | List domains | Yes |
| GET | /:id | Get domain | Yes |
| PUT | /:id | Update domain | Yes |
| DELETE | /:id | Delete domain | Yes |
/api/data-sets)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | / | Create data set | Yes |
| GET | / | List data sets | Yes |
| GET | /:id | Get data set | Yes |
| PUT | /:id | Update data set | Yes |
| DELETE | /:id | Delete data set | Yes |
| POST | /:id/load | Load data | Yes |
| POST | /:id/run | Run data set | Yes |
/api/html-conversion)
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | /docx-to-html | Convert DOCX to HTML | Yes |
| POST | /html-to-docx | Convert HTML to DOCX | Yes |
---
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| GET | /health | API health | No |
| GET | /health/database | Database health | No |
| Method | Endpoint | Description | Auth |
|--------|----------|-------------|------|
| POST | /claude-coop/analyze | AI analysis | Yes |
| POST | /claude-coop/suggest | Get suggestions | Yes |
---
Many list endpoints support these query parameters:
limit: Number of results (default: 50)
offset: Pagination offset (default: 0)
sort: Sort field
order: Sort direction ("asc" or "desc")
search: Search query
status: Filter by status
dateFrom: Filter by start date
dateTo: Filter by end date
Example:
GET /api/email-campaigns?limit=20&offset=40&status=completed&sort=createdAt&order=desc
---
{
"success": true,
"data": { },
"message": "Operation completed"
}
{
"success": false,
"error": "Error message",
"details": { }
}
---
200 - Success
201 - Created
204 - No Content
400 - Bad Request
401 - Unauthorized
403 - Forbidden
404 - Not Found
409 - Conflict
429 - Too Many Requests
500 - Server Error
---
---
application/json (most endpoints)
multipart/form-data (file uploads)
application/json
---
---
let offset = 0;
const limit = 50;
let allCampaigns = [];
while (true) {
const response = await fetch(
http://localhost:3001/api/email-campaigns?limit=${limit}&offset=${offset},
{ headers: { 'Authorization': Bearer ${token} } }
);
const { campaigns } = await response.json();
if (campaigns.length === 0) break;
allCampaigns.push(...campaigns);
offset += limit;
}
console.log('Total campaigns:', allCampaigns.length);
---
async function makeAPICall() {
try {
const response = await fetch('http://localhost:3001/api/data', {
method: 'POST',
headers: {
'Authorization': Bearer ${token},
'Content-Type': 'application/json'
},
body: JSON.stringify({ /* data */ })
});
if (!response.ok) {
const error = await response.json();
if (response.status === 401) {
// Token expired - redirect to login
redirectToLogin();
} else if (response.status === 429) {
// Rate limited - wait and retry
await wait(60000);
return makeAPICall();
} else {
// Other error
console.error('API Error:', error.error);
}
return null;
}
return await response.json();
} catch (error) {
console.error('Network error:', error);
return null;
}
}
---
Download our Postman collection for easy API testing:
https://datapublisher.io/downloads/DataPublisher-API.postman_collection.json
---
---