Docs

Reputation Management

Administrative endpoints for monitoring and managing email reputation flags

Reputation Management

Administrative endpoints for monitoring email reputation across workspaces and managing reputation flags. These endpoints help maintain high deliverability rates by identifying and addressing reputation issues.

Overview

The reputation management system tracks email sending behavior and automatically flags workspaces that may be damaging the platform's sender reputation. Admins can view reputation metrics, manage flags, and take corrective actions.

Reputation Metrics

MetricDescriptionThreshold
bounceRatePercentage of emails that bounced> 5% warning, > 10% critical
complaintRatePercentage marked as spam> 0.1% warning, > 0.3% critical
volumeSpikeSudden increase in send volume> 300% of baseline
listQualityQuality of recipient listsBased on bounce/complaint patterns
authenticationSPF/DKIM/DMARC compliance< 95% warning

Reputation Flags

FlagSeverityDescription
high_bounce_ratewarning/criticalExcessive bounce rate detected
high_complaint_ratewarning/criticalHigh spam complaint rate
suspicious_volumewarningUnusual sending volume
poor_list_qualitywarningLow-quality recipient list
auth_failurewarningAuthentication issues
manual_reviewinfoFlagged for admin review
sending_pausedcriticalSending temporarily disabled

Base URL

/api/admin/email/reputation

Endpoints

List Reputation Flags

Retrieve all reputation flags across workspaces.

GET /api/admin/email/reputation

Query Parameters

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
limitintegerNoItems per page (default: 20, max: 100)
severitystringNoFilter by severity: info, warning, critical
flagstringNoFilter by flag type
workspaceIdstringNoFilter by workspace
statusstringNoFilter by status: open, acknowledged, resolved
dateFromstringNoFilter from date (ISO 8601)
dateTostringNoFilter to date (ISO 8601)
sortBystringNoSort field: createdAt, severity
sortOrderstringNoSort direction: asc or desc

Request Example

curl -X GET "https://api.yourdomain.com/api/admin/email/reputation?severity=critical&status=open" \
  -H "Authorization: Bearer <admin_token>"

Response Example

{
  "success": true,
  "data": [
    {
      "id": "flag_12345",
      "workspaceId": "ws_abc123",
      "workspaceName": "Acme Corp",
      "flag": "high_bounce_rate",
      "severity": "critical",
      "status": "open",
      "message": "Bounce rate of 12.5% exceeds critical threshold of 10%",
      "metrics": {
        "bounceRate": 12.5,
        "sentCount": 1000,
        "bounceCount": 125,
        "threshold": 10.0
      },
      "createdAt": "2024-02-04T08:00:00Z",
      "acknowledgedAt": null,
      "resolvedAt": null,
      "acknowledgedBy": null,
      "resolvedBy": null
    },
    {
      "id": "flag_12346",
      "workspaceId": "ws_def456",
      "workspaceName": "TechStart Inc",
      "flag": "high_complaint_rate",
      "severity": "warning",
      "status": "acknowledged",
      "message": "Complaint rate of 0.15% exceeds warning threshold of 0.1%",
      "metrics": {
        "complaintRate": 0.15,
        "sentCount": 5000,
        "complaintCount": 8,
        "threshold": 0.1
      },
      "createdAt": "2024-02-03T14:30:00Z",
      "acknowledgedAt": "2024-02-03T15:00:00Z",
      "resolvedAt": null,
      "acknowledgedBy": "admin@platform.com",
      "resolvedBy": null
    }
  ],
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 15,
    "totalPages": 1,
    "bySeverity": {
      "critical": 3,
      "warning": 10,
      "info": 2
    }
  }
}

Get Reputation Flag Details

Retrieve detailed information about a specific reputation flag.

GET /api/admin/email/reputation/:id

Path Parameters

ParameterTypeRequiredDescription
idstringYesReputation flag ID

Request Example

curl -X GET "https://api.yourdomain.com/api/admin/email/reputation/flag_12345" \
  -H "Authorization: Bearer <admin_token>"

Response Example

{
  "success": true,
  "data": {
    "id": "flag_12345",
    "workspaceId": "ws_abc123",
    "workspaceName": "Acme Corp",
    "workspaceSlug": "acme-corp",
    "flag": "high_bounce_rate",
    "severity": "critical",
    "status": "open",
    "message": "Bounce rate of 12.5% exceeds critical threshold of 10%",
    "description": "This workspace has an unusually high bounce rate, indicating potential issues with their email list quality or acquisition practices.",
    "metrics": {
      "bounceRate": 12.5,
      "sentCount": 1000,
      "bounceCount": 125,
      "hardBounces": 98,
      "softBounces": 27,
      "threshold": 10.0,
      "period": "24h"
    },
    "affectedDomains": ["acme.com"],
    "recommendedActions": [
      "Review email list acquisition practices",
      "Implement double opt-in",
      "Clean email list using verification service",
      "Pause sending until issue is resolved"
    ],
    "history": [
      {
        "action": "created",
        "timestamp": "2024-02-04T08:00:00Z",
        "details": "Automatic flag created due to high bounce rate"
      }
    ],
    "createdAt": "2024-02-04T08:00:00Z",
    "acknowledgedAt": null,
    "resolvedAt": null,
    "acknowledgedBy": null,
    "resolvedBy": null
  }
}

Get Workspace Reputation

Retrieve reputation metrics and flags for a specific workspace.

GET /api/admin/email/reputation/workspace/:workspaceId

Path Parameters

ParameterTypeRequiredDescription
workspaceIdstringYesWorkspace ID

Query Parameters

ParameterTypeRequiredDescription
periodstringNoTime period: 24h, 7d, 30d (default: 24h)

Request Example

curl -X GET "https://api.yourdomain.com/api/admin/email/reputation/workspace/ws_abc123?period=7d" \
  -H "Authorization: Bearer <admin_token>"

Response Example

{
  "success": true,
  "data": {
    "workspaceId": "ws_abc123",
    "workspaceName": "Acme Corp",
    "period": "7d",
    "metrics": {
      "sentCount": 15420,
      "bounceCount": 154,
      "complaintCount": 12,
      "bounceRate": 1.0,
      "complaintRate": 0.08,
      "deliveryRate": 99.0,
      "authCompliance": 99.5
    },
    "thresholds": {
      "bounceRate": {
        "warning": 5.0,
        "critical": 10.0
      },
      "complaintRate": {
        "warning": 0.1,
        "critical": 0.3
      }
    },
    "status": "healthy",
    "flags": [
      {
        "id": "flag_12345",
        "flag": "high_bounce_rate",
        "severity": "critical",
        "status": "open",
        "createdAt": "2024-02-04T08:00:00Z"
      }
    ],
    "trend": {
      "bounceRate": "increasing",
      "complaintRate": "stable",
      "volume": "increasing"
    }
  }
}

Acknowledge Reputation Flag

Acknowledge a reputation flag to indicate it has been reviewed.

POST /api/admin/email/reputation/:id/acknowledge

Path Parameters

ParameterTypeRequiredDescription
idstringYesReputation flag ID

Request Body

FieldTypeRequiredDescription
notesstringNoOptional notes about the acknowledgment

Request Example

curl -X POST "https://api.yourdomain.com/api/admin/email/reputation/flag_12345/acknowledge" \
  -H "Authorization: Bearer <admin_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "notes": "Reviewed with workspace admin, implementing list cleaning"
  }'

Response Example

{
  "success": true,
  "data": {
    "id": "flag_12345",
    "status": "acknowledged",
    "acknowledgedAt": "2024-02-04T10:30:00Z",
    "acknowledgedBy": "admin@platform.com",
    "notes": "Reviewed with workspace admin, implementing list cleaning"
  }
}

Resolve Reputation Flag

Mark a reputation flag as resolved.

POST /api/admin/email/reputation/:id/resolve

Path Parameters

ParameterTypeRequiredDescription
idstringYesReputation flag ID

Request Body

FieldTypeRequiredDescription
resolutionstringYesResolution description
notesstringNoAdditional notes

Request Example

curl -X POST "https://api.yourdomain.com/api/admin/email/reputation/flag_12345/resolve" \
  -H "Authorization: Bearer <admin_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "resolution": "bounce_rate_improved",
    "notes": "Workspace cleaned their list, bounce rate now at 2%"
  }'

Response Example

{
  "success": true,
  "data": {
    "id": "flag_12345",
    "status": "resolved",
    "resolvedAt": "2024-02-04T14:00:00Z",
    "resolvedBy": "admin@platform.com",
    "resolution": "bounce_rate_improved",
    "notes": "Workspace cleaned their list, bounce rate now at 2%"
  }
}

Create Manual Reputation Flag

Manually create a reputation flag for a workspace.

POST /api/admin/email/reputation

Request Body

FieldTypeRequiredDescription
workspaceIdstringYesWorkspace ID
flagstringYesFlag type
severitystringYesSeverity: info, warning, critical
messagestringYesFlag message
descriptionstringNoDetailed description
recommendedActionsarrayNoList of recommended actions

Request Example

curl -X POST "https://api.yourdomain.com/api/admin/email/reputation" \
  -H "Authorization: Bearer <admin_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "workspaceId": "ws_abc123",
    "flag": "manual_review",
    "severity": "warning",
    "message": "Unusual sending patterns detected",
    "description": "Workspace showing irregular sending times and volume spikes",
    "recommendedActions": [
      "Contact workspace admin",
      "Review recent campaign details"
    ]
  }'

Response Example

{
  "success": true,
  "data": {
    "id": "flag_12347",
    "workspaceId": "ws_abc123",
    "flag": "manual_review",
    "severity": "warning",
    "status": "open",
    "message": "Unusual sending patterns detected",
    "createdAt": "2024-02-04T10:30:00Z"
  }
}

Pause Workspace Sending

Temporarily pause email sending for a workspace due to reputation issues.

POST /api/admin/email/reputation/workspace/:workspaceId/pause

Path Parameters

ParameterTypeRequiredDescription
workspaceIdstringYesWorkspace ID

Request Body

FieldTypeRequiredDescription
reasonstringYesReason for pausing
durationstringNoPause duration: 1h, 24h, 7d, or indefinite
notesstringNoAdditional notes

Request Example

curl -X POST "https://api.yourdomain.com/api/admin/email/reputation/workspace/ws_abc123/pause" \
  -H "Authorization: Bearer <admin_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Critical bounce rate affecting platform reputation",
    "duration": "24h",
    "notes": "Workspace must clean list before resuming"
  }'

Response Example

{
  "success": true,
  "data": {
    "workspaceId": "ws_abc123",
    "sendingPaused": true,
    "pausedAt": "2024-02-04T10:30:00Z",
    "pausedBy": "admin@platform.com",
    "reason": "Critical bounce rate affecting platform reputation",
    "duration": "24h",
    "resumesAt": "2024-02-05T10:30:00Z",
    "flagId": "flag_12348"
  }
}

Resume Workspace Sending

Resume email sending for a paused workspace.

POST /api/admin/email/reputation/workspace/:workspaceId/resume

Path Parameters

ParameterTypeRequiredDescription
workspaceIdstringYesWorkspace ID

Request Body

FieldTypeRequiredDescription
reasonstringYesReason for resuming

Request Example

curl -X POST "https://api.yourdomain.com/api/admin/email/reputation/workspace/ws_abc123/resume" \
  -H "Authorization: Bearer <admin_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Workspace has cleaned their list and bounce rate is now acceptable"
  }'

Response Example

{
  "success": true,
  "data": {
    "workspaceId": "ws_abc123",
    "sendingPaused": false,
    "resumedAt": "2024-02-04T14:00:00Z",
    "resumedBy": "admin@platform.com",
    "reason": "Workspace has cleaned their list and bounce rate is now acceptable"
  }
}

Get Platform Reputation Overview

Retrieve overall reputation metrics for the entire platform.

GET /api/admin/email/reputation/overview

Query Parameters

ParameterTypeRequiredDescription
periodstringNoTime period: 24h, 7d, 30d (default: 24h)

Request Example

curl -X GET "https://api.yourdomain.com/api/admin/email/reputation/overview?period=7d" \
  -H "Authorization: Bearer <admin_token>"

Response Example

{
  "success": true,
  "data": {
    "period": "7d",
    "platformMetrics": {
      "totalSent": 154200,
      "totalBounced": 1542,
      "totalComplaints": 123,
      "bounceRate": 1.0,
      "complaintRate": 0.08,
      "deliveryRate": 99.0
    },
    "flags": {
      "total": 15,
      "open": 8,
      "acknowledged": 4,
      "resolved": 3,
      "bySeverity": {
        "critical": 3,
        "warning": 10,
        "info": 2
      }
    },
    "workspaces": {
      "total": 45,
      "healthy": 38,
      "flagged": 5,
      "paused": 2
    },
    "trends": {
      "bounceRate": "stable",
      "complaintRate": "decreasing",
      "flagCount": "increasing"
    }
  }
}

Error Responses

Flag Not Found

{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Reputation flag not found"
  }
}

Invalid Flag Status

{
  "success": false,
  "error": {
    "code": "BAD_REQUEST",
    "message": "Cannot resolve flag that is not acknowledged",
    "details": {
      "currentStatus": "open",
      "requiredStatus": "acknowledged"
    }
  }
}

Workspace Not Found

{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Workspace not found"
  }
}

SDK Example

import { createAdminEmailClient } from '@/lib/admin/email-client';

const adminEmail = createAdminEmailClient();

// List all reputation flags
const flags = await adminEmail.reputation.list({
  severity: 'critical',
  status: 'open'
});

// Get specific flag details
const flag = await adminEmail.reputation.get('flag_12345');

// Get workspace reputation
const workspaceRep = await adminEmail.reputation.getWorkspace('ws_abc123', {
  period: '7d'
});

// Acknowledge a flag
await adminEmail.reputation.acknowledge('flag_12345', {
  notes: 'Reviewed with workspace admin'
});

// Resolve a flag
await adminEmail.reputation.resolve('flag_12345', {
  resolution: 'bounce_rate_improved',
  notes: 'Issue resolved after list cleaning'
});

// Create manual flag
await adminEmail.reputation.create({
  workspaceId: 'ws_abc123',
  flag: 'manual_review',
  severity: 'warning',
  message: 'Unusual sending patterns detected'
});

// Pause workspace sending
await adminEmail.reputation.pauseWorkspace('ws_abc123', {
  reason: 'Critical bounce rate',
  duration: '24h'
});

// Resume workspace sending
await adminEmail.reputation.resumeWorkspace('ws_abc123', {
  reason: 'Issue resolved'
});

// Get platform overview
const overview = await adminEmail.reputation.getOverview({
  period: '7d'
});

On this page