On-Call API › Integrations
Create an integration
Creates an integration with a new ingest key. Point the monitoring tool at
https://evohub.io/ingest/<type>?key=<api_key> (see the Alert ingest API
reference). An email integration also gets its own inbound address in
email_address.
An integration carries its ingest key (api_key), the credential a
monitoring tool sends alerts with — treat these responses as secrets. An
integration that belongs to a team is visible only to callers in that team;
others get 404.
Permission (API-key scope): oncall:integration:write.
Authorization
bearerAuth(oncall:integration:write)apiKeyHeader(oncall:integration:write)
Request body required
namestring requiredtypestring requiredThe integration kind; it decides the ingest URL,/ingest/<type>(webhookis/ingest/alerts). Any other value is refused.escalation_policy_idstringteam_idstringA team the caller is in; empty for organization-wide.
Responses
201
The integration, with its key.
dataIntegration requiredShow Integration properties
idstringorg_idstringteam_idstringnamestringtypestringThe integration kind, e.g.prometheus,grafana,api,webhook,email,github.api_keystringThe ingest key. A credential: treat it as a secret.email_addressstringInbound address, foremailintegrations only.enabledbooleanescalation_policy_idstringlast_event_atstring (date-time)event_countintegersigning_secret_configuredbooleanWhether a signing secret is set. The secret itself is never returned.external_sourcestringexternal_idstringcreated_atstring (date-time)updated_atstring (date-time)
successboolean required
400
The body is not JSON (INVALID_BODY); name is empty or too long, type is empty or not a known integration type, or escalation_policy_id names no policy the caller can see (VALIDATION_FAILED).
errorobject requiredcodestring requiredmessagestring requireddetailsarray of object requiredfieldstringmessagestring
401
No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
403
The key lacks the scope (FORBIDDEN), or team_id names a team the caller is not in (NOT_IN_TEAM).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
429
Too many requests (RATE_LIMITED). Wait Retry-After seconds.
Retry-AfterintegerSeconds to wait.
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
500
Something went wrong on EvoHub's side (INTERNAL_ERROR). Retry later.
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
Example request
curl -X POST 'https://evohub.io/api/v1/integrations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
"name": "Prometheus prod",
"type": "prometheus",
"escalation_policy_id": "3f8a0b2c-4d6e-4f8a-b1c3-d5e7f9a1b3c5"
}'