Rate Limits
Webhook Strategy (ASYNC)
Rate Limit Policy
All OEM Alerting API endpoints are subject to punitive rate limiting. Limits are applied
per source IP address within a sliding time window.
| Endpoint | Method | Rate Limit | Window |
|---|---|---|---|
/oem-alerts-api/alert | POST | 100 - 500 | 60s |
/oem-alerts-api/alert/list/tickets | POST | 100 | 60s |
/oem-alerts-api/alert/:correlationId/ticket | POST | 100 - 120 | 60s |
Rate limits may vary by environment and contract. Contact your MSPCentric
account representative for your specific allocation.
Rate Limit Response
When a rate limit is exceeded, the API returns:
- HTTP Status:
429 Too Many Requests - Header:
Retry-After: <seconds>-- the number of seconds until the rate
limit window resets - Body:
{ "statusCode": 429, "message": "Rate limit exceeded. Retry after <seconds> seconds." }
Recommended Client Behavior
- Respect
Retry-After-- Pause requests for the duration specified in the
Retry-Afterheader before retrying. - Implement exponential backoff -- If consecutive 429 responses are received,
increase the wait time exponentially (e.g., 1s, 2s, 4s, 8s) up to a reasonable
maximum. - Queue locally -- For high-volume alert sources, maintain a local queue and
submit alerts at a controlled rate within your allocation.
Ingestion
Ingestion Latency
| Metric | Target | Description |
|---|---|---|
| Acceptance Latency (p50) | < 100ms | Time from HTTP request receipt to 201 response |
| Acceptance Latency (p99) | < 500ms | Includes validation, ticket log creation, and queue dispatch |
Upon successful ingestion, the API returns:
{
"statusCode": 201,
"message": "Alert accepted for processing",
"data": {
"correlationId": "abc-123-def-456",
"messageId": "sqs-message-id"
}
}The correlationId can be used to query the alert status at any point via the
/alert/:correlationId/ticket endpoint.
Durability
Accepted alerts are persisted to a durable message queue before the
201 response is returned. Messages are retained for up to 14 days in the event of
processing failures.
Failed messages are routed to a dead-letter queue after the configured retry
policy is exhausted.
Processing
Processing Time
Processing time is measured from queue ingestion to PSA ticket action completion.
| Metric | Target | Notes |
|---|---|---|
| Processing Time (p50) | < 5 seconds | Under normal PSA API conditions |
| Processing Time (p95) | < 30 seconds | Accounts for PSA API variability |
| Processing Time (p99) | < 60 seconds | Peak load or degraded PSA performance |
Important: Processing time is dependent on the responsiveness of the downstream
PSA system. Degradation of the PSA API may impact
processing times beyond MSPCentric's control.
Processing Throughput
Alert processing capacity scales with infrastructure. Current capacity targets:
| Tier | Throughput | Description |
|---|---|---|
| Standard | Up to 50,000 alerts/hr | Typical deployment |
| High Volume | Up to 200,000 alerts/hr | Scaled deployment for enterprise partners |
Throughput targets assume typical PSA API latency (~500ms). Actual throughput may
vary based on PSA performance and alert complexity.
5.4 Status Delivery
Status updates are delivered via the Inform system:
| Delivery Method | Latency | Description |
|---|---|---|
| Webhook | < 5 seconds after processing | HTTP POST to your registered webhook URL |
| SSE (Server-Sent Events) | Real-time | Persistent connection for immediate status updates |
| Polling | On-demand | Query via /oem-api/poll endpoint |
