Skip to content

SIGNL4 API API

by signl4.com

OAuthHTTPSMessaging
Open documentation ↗

Overview

<p>Use our API for systems integration or to build your own use cases. Sample scenarios include but are not limited to:</p><ul><li>2-way integration: Triggering of Signls and updates in the third party systems when alert state changes occur</li><li>Retrieving alarms for logging purposes</li><li>Calendar integrations: Creation and management of on-call duties</li><li>Punch users in and out based on external calendars</li><li>etc.</li></ul><p>AUTHENTICATION<br>Using the API requires an API key, which you can generate in the SIGNL4 portal under 'Developers'.<br>This key must then be specified in a special header in every HTTP request.<br>This header is called <b style='color:#F8B41F'>X-S4-Api-Key</b>.<br><br>The base URL of the API is <a rel='noopener noreferrer' target='_blank' href='https://connect.signl4.com/api/'>https://connect.signl4.com/api/</a>.<br>Copyright © Derdack GmbH<br></p>

SIGNL4 API is a messaging API from signl4.com. Requests are authenticated with OAuth. It is served over HTTPS. Its OpenAPI description documents 101 endpoints.

At a glance

Authentication
OAuth
HTTPS
Yes
CORS
Unknown
Category
Messaging
Base URL
https://connect.signl4.com/api
Version
v1
Endpoints
101
Spec updated
2021-06-21

Make a first request

Replace the placeholders; the documentation says exactly where credentials go.

cURL
curl -X GET "https://connect.signl4.com/api/alerts/report" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN"
JavaScript
const response = await fetch("https://connect.signl4.com/api/alerts/report", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
  },
});
const data = await response.json();
console.log(data);
Python
import requests

response = requests.request(
    "GET",
    "https://connect.signl4.com/api/alerts/report",
    headers={
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
    },
    timeout=30,
)
print(response.json())

Endpoints

MethodPathWhat it does
POST/alertsTrigger Alert
POST/alerts/acknowledgeAllConfirms all visible alerts
POST/alerts/acknowledgeMultipleAcknowlegde multiple alerts
POST/alerts/closeAllClose all acknowledged alerts.
POST/alerts/closeMultipleClose multiple alerts
POST/alerts/pagedGets alerts paged
GET/alerts/reportGet Alert Report
POST/alerts/undoAcknowledgeMultipleQueue undo of multiple acknowledgments.
POST/alerts/undoCloseMultipleWithdraw closure of multiple alerts
GET/alerts/{alertId}Get Alert
POST/alerts/{alertId}/acknowledgeAcknowledge an alert
POST/alerts/{alertId}/annotateAnnotate Alert
GET/alerts/{alertId}/annotationsGet annotations of an alert
GET/alerts/{alertId}/attachmentsGet attachments of an alert
GET/alerts/{alertId}/attachments/{attachmentId}Gets a specified attachment of a specified alert.
POST/alerts/{alertId}/closeClose an alert
GET/alerts/{alertId}/notificationsGet alert notifications
GET/alerts/{alertId}/overviewGet an overview alert.
POST/alerts/{alertId}/undoAcknowledgeUndo the acknowledgement of an alert.
POST/alerts/{alertId}/undoCloseUndo the closure of an alert.
GET/categories/imagesGets the names of all alert category images. You can get the image by going to account.signl4.com/images/alerts/categoryImageName.svg
GET/categories/{teamId}Get all categories
POST/categories/{teamId}Create a new category
GET/categories/{teamId}/metricsGet metrics for all categories
GET/categories/{teamId}/{categoryId}Get a specific category
PUT/categories/{teamId}/{categoryId}Update an existing category
DELETE/categories/{teamId}/{categoryId}Delete an existing category
GET/categories/{teamId}/{categoryId}/metricsGet metrics for a specific category
GET/categories/{teamId}/{categoryId}/subscriptionsGet category subscriptions
POST/categories/{teamId}/{categoryId}/subscriptionsSet category subscriptions
POST/events/pagedGet overview event paged.
GET/events/{eventId}/overviewGet overview event
GET/events/{eventId}/parametersGet event parameters
GET/prepaid/balanceGet your subscription's current prepaid balance.
GET/prepaid/settingsGet your subscription's current prepaid settings.
PUT/prepaid/settingsUpdate your subscription's current prepaid settings.
GET/prepaid/transactionsGet your subscription's prepaid transactions.
GET/scripts/instancesReturns all script instances of the SIGNL4 team
POST/scripts/instancesCreates a new script instance in the in the SIGNL4 team.
GET/scripts/instances/{instanceId}Returns all information about a given script instance which includes its runtime status.
PUT/scripts/instances/{instanceId}Updates a given script instance, typically used for updating the configuration of a script.
DELETE/scripts/instances/{instanceId}Deletes a script instance.
PUT/scripts/instances/{instanceId}/dataUpdates custom data of a given script instance which includes its display name.
POST/scripts/instances/{instanceId}/disableDisables a given script instance.
POST/scripts/instances/{instanceId}/enableEnables a script instance.
GET/scripts/inventoryReturns all available inventory scripts which can be added to a SIGNL4 subscription.
GET/scripts/inventory/parsedReturns all inventory scripts.
GET/scripts/inventory/parsed/{scriptId}Returns an inventory script by its id.
GET/subscriptionsGet infos of all available/managed subscriptions.
GET/subscriptions/{subscriptionId}Get infos of a specific subscription.
GET/subscriptions/{subscriptionId}/channelPricesReturns the subscription's channel price information.
GET/subscriptions/{subscriptionId}/featuresReturns the features of a specified subscription.
GET/subscriptions/{subscriptionId}/prepaidBalanceGet a subscription's current prepaid balance.
GET/subscriptions/{subscriptionId}/prepaidSettingsGet a subscription's current prepaid settings.
PUT/subscriptions/{subscriptionId}/prepaidSettingsUpdate a subscription's current prepaid settings.
GET/subscriptions/{subscriptionId}/prepaidTransactionsGet a subscription's prepaid transactions.
PUT/subscriptions/{subscriptionId}/profileUpdates a subscriptions profile.
GET/subscriptions/{subscriptionId}/teamsGet infos for all teams of the subscription.
GET/subscriptions/{subscriptionId}/userLicensesGets a subscription's user licenses.
GET/teamsGet infos of all teams.
GET/teams/{teamId}Gets infos of a specific team.
GET/teams/{teamId}/alertReportsGet information about downloadable alert reports
GET/teams/{teamId}/alertReports/{fileName}Returns Alert Report
GET/teams/{teamId}/alertSettingsGets alert settings of a specific team.
POST/teams/{teamId}/alertSettingsSets alert settings of a specific team.
GET/teams/{teamId}/dutyReportsGet Information about downloadable reports
GET/teams/{teamId}/dutyReports/{fileName}Download duty report with a specific fileName
GET/teams/{teamId}/dutysummaryGet duty assistant info for a team
GET/teams/{teamId}/eventSourcesGets event sources of a specific team.
GET/teams/{teamId}/membershipsGet all invites of a team.
POST/teams/{teamId}/membershipsInvite users to a team
POST/teams/{teamId}/memberships/resendInviteMailSends invite email again if an invite exists
PUT/teams/{teamId}/memberships/{userId}Update user's team membership.
DELETE/teams/{teamId}/memberships/{userId}Removes a user or invitation from a team, and may delete the user if he is not in any team.
PUT/teams/{teamId}/profileUpdates team profile of a team
GET/teams/{teamId}/schedulesReturns information about all duties that belong to the team.
POST/teams/{teamId}/schedulesCreate/Update given duty schedule.
POST/teams/{teamId}/schedules/deleteRangeDelete duty schedules in range
POST/teams/{teamId}/schedules/multipleSave multiple schedules. It is possible to override existing schedules if you wish
DELETE/teams/{teamId}/schedules/{dutyId}Delete a specific duty.
GET/teams/{teamId}/schedules/{scheduleId}Returns information of the duty schedule with the specified Id.
GET/teams/{teamId}/setupProgressGets setup progress of a specific team.
GET/usersGet all Users
GET/users/{userId}Get User by Id
PUT/users/{userId}/changePasswordUpdates the password of a user
POST/users/{userId}/checkPermissionsChecks if a user has the provided permission.
GET/users/{userId}/dutyStatusGet duty status by user Id
GET/users/{userId}/image—
POST/users/{userId}/imageUploaded a profile image for a specified user.
PUT/users/{userId}/profileUpdates user profile of an user
POST/users/{userId}/punchInPunch User in
POST/users/{userId}/punchInAsManagerPunch User in as Manager
POST/users/{userId}/punchOutPunch User out
GET/users/{userId}/setupProgressGets setup progress of a specific user.
GET/webhooksGet Webhooks
POST/webhooksCreate Webhook
GET/webhooks/{webhookId}Get Webhook by Id
PUT/webhooks/{webhookId}Update Webhook by Id
DELETE/webhooks/{webhookId}Delete Webhook by Id
POST/webhooks/{webhookId}/disableAbility to enable a webHook.

Showing the first 100 of 101 endpoints; the full list is in the documentation.

Questions

Does the SIGNL4 API API need an API key?

Yes. The SIGNL4 API API uses OAuth authentication; the documentation explains how to get credentials.

Does the SIGNL4 API API support HTTPS?

Yes, the SIGNL4 API API is served over HTTPS.

How many endpoints does the SIGNL4 API API have?

Its OpenAPI description lists 101 endpoints in version v1. The first 100 are shown on this page.

What are alternatives to the SIGNL4 API API?

Other Messaging APIs include Qakka, Telegram Bot API, Airflow API (Stable), Sakari, The Mercure protocol.

Compare alternatives →

Qakka

Messaging

API for Qakka Queue System

No auth10 endpoints

Telegram Bot API

Messaging

Auto-generated OpenAPI schema

No auth74 endpoints

Airflow API (Stable)

Messaging

# Overview To facilitate management, Apache Airflow supports a range of REST API endpoints across its objects. This section provides an overview of the API design, methods, and supported use cases. Most of the endpoints accept `JSON` as input and return `JSON` responses. This means that you must usually add the following headers to your request: ``` Content-type: application/json Accept: application/json ``` ## Resources The term `resource` refers to a single type of object in the Airflow metadata. An API is broken up by its endpoint's corresponding resource. The name of a resource is typically plural and expressed in camelCase. Example: `dagRuns`. Resource names are used as part of endpoint URLs, as well as in API parameters and responses. ## CRUD Operations The platform supports **C**reate, **R**ead, **U**pdate, and **D**elete operations on most resources. You can review the standards for these operations and their standard parameters below. Some endpoints have special behavior as exceptions. ### Create To create a resource, you typically submit an HTTP `POST` request with the resource's required metadata in the request body. The response returns a `201 Created` response code upon success with the resource's metadata, including its internal `id`, in the response body. ### Read The HTTP `GET` request can be used to read a resource or to list a number of resources. A resource's `id` can be submitted in the request parameters to read a specific resource. The response usually returns a `200 OK` response code upon success, with the resource's metadata in the response body. If a `GET` request does not include a specific resource `id`, it is treated as a list request. The response usually returns a `200 OK` response code upon success, with an object containing a list of resources' metadata in the response body. When reading resources, some common query parameters are usually available. e.g.: ``` v1/connections?limit=25&offset=25 ``` |Query Parameter|Type|Description| |---------------|----|-----------| |limit|integer|Maximum number of objects to fetch. Usually 25 by default| |offset|integer|Offset after which to start returning objects. For use with limit query parameter.| ### Update Updating a resource requires the resource `id`, and is typically done using an HTTP `PATCH` request, with the fields to modify in the request body. The response usually returns a `200 OK` response code upon success, with information about the modified resource in the response body. ### Delete Deleting a resource requires the resource `id` and is typically executing via an HTTP `DELETE` request. The response usually returns a `204 No Content` response code upon success. ## Conventions - Resource names are plural and expressed in camelCase. - Names are consistent between URL parameter name and field name. - Field names are in snake_case. ```json { "name": "string", "slots": 0, "occupied_slots": 0, "used_slots": 0, "queued_slots": 0, "open_slots": 0 } ``` ### Update Mask Update mask is available as a query parameter in patch endpoints. It is used to notify the API which fields you want to update. Using `update_mask` makes it easier to update objects by helping the server know which fields to update in an object instead of updating all fields. The update request ignores any fields that aren't specified in the field mask, leaving them with their current values. Example: ``` resource = request.get('/resource/my-id').json() resource['my_field'] = 'new-value' request.patch('/resource/my-id?update_mask=my_field', data=json.dumps(resource)) ``` ## Versioning and Endpoint Lifecycle - API versioning is not synchronized to specific releases of the Apache Airflow. - APIs are designed to be backward compatible. - Any changes to the API will first go through a deprecation phase. # Trying the API You can use a third party client, such as [curl](https://curl.haxx.se/), [HTTPie](https://httpie.org/), [Postman](https://www.postman.com/) or [the Insomnia rest client](https:

HTTP Basic73 endpoints

Sakari

Messaging

# Introduction Welcome to the documentation for the Sakari Messaging REST API. Sakari provides an advanced platform to drive large scale customized SMS communication REST is a web-service protocol that lends itself to rapid development by using everyday HTTP and JSON technology. To find out more about our product offering, please visit [https://sakari.io](https://sakari.io). # Quickstart For your convenience we have created a quickstart guide to get you up and running in 5 minutes. [https://sakari.io/blog/sakari-api-quickstart](https://sakari.io/blog/sakari-api-quickstart) # PostMan Collection We've created a simple set of examples using [PostMan](https://www.getpostman.com/) Simply click below to import these. You will need to setup three environment variables in PostMan - AccountId, ClientId and ClientSecret. Check out our PostMan blog post for more information [![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/d616e273edc916a7a6eb) # Finding your client id, client secret and account id To authenticate against the API's you will need three key pieces of data - client id - client secret - account id To retrieve these, simply login into [https://hub.sakari.io](https://hub.sakari.io) and click on the "cog" in the top right corner. In the popup dialog at the bottom you should see your API credentials and account id. If these are not visible you will need to click on "Request Credentials" # Versioning With any breaking changes we will introduce a new version of the API. The latest version is v1. The API uses an open schema model, which means server may add extra properties to responses. Likewise, the server will ignore any extra query parameters and request body properties. When you write clients, you need to ignore additional properties in responses to ensure they do not break. # Testing There are numerous tools available for testing the API's. We will include examples using curl and the client SDKs that we have created. If you would like to see an SDK in a language not currently available, please let us know. # Throttling / Limits Our API's have been specifically designed to support bulk messaging in a single API call. We therefore impose limits on the frequency of calling the APIs to prevent abuse or runaway processes. If you feel you need a higher limit, please contact us. If you hit the limit you will get a 429 error code returned from our servers # Errors The API uses standard HTTP status codes to indicate the success or failure of the API call. The body of the response will be JSON in the following format: ``` { "success": false, "error": { "code": "CONT-001", "message": "Invalid mobile number" } } ``` # Pagination For performance, most GET calls return a subset of data. This data is paginated for easy access. Most APIs which return collections of data will return a pagination object as such: ``` { "pagination": { "offset": 0, "limit": 10 "totalCount": 21 } } ``` When making calls to the API, you can adjust the slice of data returned using query parameters such as: `` https://api.sakari.io/v1/accounts/123/contacts?offset=20&limit=25 `` This will return 25 contacts with an offset of 20.

OAuth26 endpoints

The Mercure protocol

Messaging

[Mercure](https://mercure.rocks) is a protocol allowing to push data updates to web browsers and other HTTP clients in a convenient, fast, reliable and battery-efficient way.

API key5 endpoints

API iSendPro

Messaging

[1] Liste des fonctionnalités : - envoi de SMS à un ou plusieurs destinataires, - lookup HLR, - récupération des récapitulatifs de campagne, - gestion des répertoires, - ajout en liste noire. - comptage du nombre de caractères des SMS [2] Pour utiliser cette API vous devez: - Créer un compte iSendPro sur https://isendpro.com/ - Créditer votre compte - Remarque: obtention d'un crédit de test possible sous conditions - Noter votre clé de compte (keyid) - Elle vous sera indispensable à l'utilisation de l'API - Vous pouvez la trouver dans le rubrique mon "compte", sous-rubrique "mon API" - Configurer le contrôle IP - Le contrôle IP est configurable dans le rubrique mon "compte", sous-rubrique "mon API" - Il s'agit d'un système de liste blanche, vous devez entrer les IP utilisées pour appeler l'API - Vous pouvez également désactiver totalement le contrôle IP

No auth14 endpoints

Listed from APIs.guru (CC0).