Observability / Errors

sfp server API reference for Observability / Errors: 7 endpoints.

GET/sfp/api/observability/errors

Returns paginated error log entries for a registered Salesforce org. Supports predefined time ranges (last_1h through last_30d) or custom start/end dates. Full-text search across all error fields via the search parameter.

Authorization

access-token
AuthorizationBearer <token>

In: header

Query Parameters

orgId*string

Registered Salesforce org id (15 or 18 characters)

range?string

Predefined time range. Ignored if start/end are provided.

Value in

  • "last_1h"
  • "last_6h"
  • "last_24h"
  • "last_7d"
  • "last_30d"
start?string

Custom range start (ISO 8601). Requires end.

end?string

Custom range end (ISO 8601). Requires start.

errorType?string

Filter by error type

Value in

  • "flow_failure"
  • "apex_exception"
search?string

Full-text search across all error fields

limit?number

Maximum number of results (1-500)

Default50
offset?number

Pagination offset

Default0

Response Body

application/json

curl -X GET "https://example.com/sfp/api/observability/errors?orgId=00D5g000004XXXXEAY"
{  "meta": {    "orgId": "00D5g000004XXXX",    "orgUsername": "admin@company.com",    "range": "last_24h",    "start": "2026-02-13T10:30:00Z",    "end": "2026-02-14T10:30:00Z",    "generatedAt": "2026-02-14T10:30:00Z",    "queryDurationMs": 42  },  "errors": [    {      "_time": "2026-02-14T10:30:00Z",      "_msg": "Flow 'Lead_Assignment' failed at element 'Update_Records'",      "error_type": "flow_failure",      "org_id": "00D5g000004XXXX",      "parse_status": "complete",      "ingestion_path": "self_hosted",      "flow_name": "Lead_Assignment",      "failed_element": "Update_Records",      "error_detail": "FIELD_CUSTOM_VALIDATION_EXCEPTION",      "impacted_user": "jane.smith@company.com",      "exception_type": "System.DmlException",      "apex_class": "PaymentController",      "apex_method": "processRefund",      "stack_trace": "string",      "exception_message": "string",      "raw_subject": "string",      "log_group": "error_logs"    }  ],  "pagination": {    "total": 150,    "limit": 50,    "offset": 0,    "hasMore": true  },  "summary": {    "total": 150,    "byType": {      "flow_failure": 100,      "apex_exception": 50    }  }}
GET/sfp/api/observability/errors/summary

Returns aggregate counts, per-org totals, and time-series data. Supports predefined and custom date ranges.

Authorization

access-token
AuthorizationBearer <token>

In: header

Query Parameters

range?string

Predefined time range. Ignored if start/end are provided.

Value in

  • "last_1h"
  • "last_6h"
  • "last_24h"
  • "last_7d"
  • "last_30d"
start?string

Custom range start (ISO 8601). Requires end.

end?string

Custom range end (ISO 8601). Requires start.

Response Body

application/json

curl -X GET "https://example.com/sfp/api/observability/errors/summary"
{  "meta": {    "orgId": "00D5g000004XXXX",    "orgUsername": "admin@company.com",    "range": "last_24h",    "start": "2026-02-13T10:30:00Z",    "end": "2026-02-14T10:30:00Z",    "generatedAt": "2026-02-14T10:30:00Z",    "queryDurationMs": 42  },  "orgs": [    {      "orgUsername": "admin@company.com",      "orgId": "00D5g000004XXXX",      "total": 15,      "byType": {        "flow_failure": 10,        "apex_exception": 5      }    }  ],  "total": 15,  "byType": {    "flow_failure": 10,    "apex_exception": 5  },  "timeSeries": [    {      "label": "flow_failure",      "dataPoints": [        {          "timestamp": "2026-02-14T10:00:00Z",          "count": 5        }      ]    }  ],  "totalOrgs": 3,  "hasStoredErrors": true,  "ingestionAddress": "ingest+tenant.ABCDEFGHIJKLMNOPQRSTUVWX@errors.flxbl.io"}
POST/sfp/api/observability/errors/ingestion-address/rotate

Creates a new tenant-owned address and keeps the previous address valid for 24 hours.

Authorization

access-token
AuthorizationBearer <token>

In: header

Response Body

curl -X POST "https://example.com/sfp/api/observability/errors/ingestion-address/rotate"
Empty
POST/sfp/api/observability/errors/ingestion-address/revoke-previous

Authorization

access-token
AuthorizationBearer <token>

In: header

Response Body

curl -X POST "https://example.com/sfp/api/observability/errors/ingestion-address/revoke-previous"
Empty
GET/sfp/api/observability/errors/query

Execute a raw LogsQL query against VictoriaLogs. For power users and debugging.

Authorization

access-token
AuthorizationBearer <token>

In: header

Query Parameters

query*string

LogsQL query string

start?string

Start time (ISO 8601 or relative like "1h")

end?string

End time (ISO 8601 or relative)

limit?number

Maximum number of results to return

Response Body

application/json

curl -X GET "https://example.com/sfp/api/observability/errors/query?query=error_type%3Aflow_failure+AND+org_id%3A00D5g000004XXXX"
{  "results": [    "string"  ]}
POST/sfp/api/observability/errors/ingest

Ingest structured error log entries into VictoriaLogs. Used by programmatic integrations.

Authorization

access-token
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/sfp/api/observability/errors/ingest" \  -H "Content-Type: application/json" \  -d '{    "entries": [      {        "_time": "2026-02-14T10:30:00Z",        "_msg": "string",        "error_type": "flow_failure",        "org_id": "00D5g000004XXXX"      }    ]  }'
{  "written": 0,  "parseStatus": "string",  "message": "string"}
POST/sfp/api/observability/errors/ingest/email

Parse a raw Salesforce error email (Flow failure or Apex exception) and ingest into VictoriaLogs.

Authorization

access-token
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/sfp/api/observability/errors/ingest/email" \  -H "Content-Type: application/json" \  -d '{    "subject": "string",    "body": "string"  }'
{  "written": 0,  "parseStatus": "string",  "message": "string"}