SuprSend Ws Signing Key API
The Ws Signing Key API from SuprSend — 3 operation(s) for ws signing key.
The Ws Signing Key API from SuprSend — 3 operation(s) for ws signing key.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/suprsend-ws-signing-key-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: SuprSend Broadcast Ws Signing Key API
description: APIs supported on suprsend platform
version: 1.2.2
servers:
- url: https://hub.suprsend.com
security:
- sec0: []
- BearerAuth: []
tags:
- name: Ws Signing Key
paths:
/v1/{workspace}/ws_signing_key/:
get:
summary: List Workspace Signing Keys
description: List signing keys for this workspace. Signing keys are used to verify signed payloads.
operationId: list-workspace-signing-keys
servers:
- url: https://management-api.suprsend.com
security:
- ServiceTokenAuth: []
x-codeSamples:
- lang: cURL
label: List Workspace Signing Keys
source: "curl -X GET \"https://management-api.suprsend.com/v1/{workspace}/ws_signing_key/\" \\\n --header 'Authorization: ServiceToken <SERVICE_TOKEN>' \\\n --header 'Content-Type: application/json'\n"
parameters:
- in: path
name: workspace
required: true
schema:
type: string
description: Workspace slug (e.g. `staging`, `production`).
responses:
'200':
description: Successfully retrieved signing keys.
content:
application/json:
schema:
$ref: '#/components/schemas/ManagementWorkspaceSigningKeyListResponse'
example:
meta:
count: 2
limit: 10
offset: 0
results:
- id: ws_signk_exampleId01
uid: signing_key_exampleUid01
status: active
allowed_domains: null
expiry_at: null
created_at: '2026-04-02T19:35:06.513406Z'
created_by:
name: Example User
email: user@example.com
rolled_at: null
rolled_by: null
deleted_at: null
deleted_by: null
- id: ws_signk_exampleId02
uid: signing_key_exampleUid02
status: rolled
allowed_domains: null
expiry_at: null
created_at: '2024-09-08T16:27:46.700367Z'
created_by:
name: Example User
email: user@example.com
rolled_at: '2026-04-02T19:35:06.503029Z'
rolled_by:
name: Example User
email: user@example.com
deleted_at: null
deleted_by: null
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
tags:
- Ws Signing Key
post:
summary: Create Workspace Signing Key
description: 'Create a signing key for this workspace.
The `private_key_pem` and `private_key_base64` fields are returned **only once** at creation. Store them securely - they cannot be retrieved later.
Only **one active** signing key is allowed per workspace. To replace an existing active key, use the [Roll Workspace Signing Key](#operation/roll-workspace-signing-key) endpoint instead.
'
operationId: create-workspace-signing-key
servers:
- url: https://management-api.suprsend.com
security:
- ServiceTokenAuth: []
x-codeSamples:
- lang: cURL
label: Create Workspace Signing Key
source: "curl -X POST \"https://management-api.suprsend.com/v1/{workspace}/ws_signing_key/\" \\\n --header 'Authorization: ServiceToken <SERVICE_TOKEN>' \\\n --header 'Content-Type: application/json'\n"
parameters:
- in: path
name: workspace
required: true
schema:
type: string
description: Workspace slug (e.g. `staging`, `production`).
responses:
'201':
description: Signing key created. Private key material is returned once in this response.
content:
application/json:
schema:
$ref: '#/components/schemas/ManagementWorkspaceSigningKeyCreateResponse'
example:
id: ws_signk_exampleId01
uid: signing_key_exampleUid01
status: active
allowed_domains: null
expiry_at: null
private_key_pem: '-----BEGIN PRIVATE KEY-----
...redacted...
-----END PRIVATE KEY-----
'
private_key_base64: LS0tLS1CRUdJTi...redacted...
created_at: '2026-04-21T12:35:24.117631Z'
created_by:
name: System User
email: org_XXXXXXXXXXXXXXXXXXXXXX@systemuser.suprsend.com
rolled_at: null
rolled_by: null
deleted_at: null
deleted_by: null
'400':
description: Validation error - for example, an active signing key already exists.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: 400
error_code: error
type: ValidationError
message: '["only 1 active signing key is allowed"]'
detail:
- only 1 active signing key is allowed
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
tags:
- Ws Signing Key
/v1/{workspace}/ws_signing_key/{signing_key_uid}/:
delete:
summary: Delete Workspace Signing Key
description: Delete a signing key by its `uid` (e.g. `signing_key_20260421T123746`).
operationId: delete-workspace-signing-key
servers:
- url: https://management-api.suprsend.com
security:
- ServiceTokenAuth: []
x-codeSamples:
- lang: cURL
label: Delete Workspace Signing Key
source: "curl -X DELETE \"https://management-api.suprsend.com/v1/{workspace}/ws_signing_key/{signing_key_uid}/\" \\\n --header 'Authorization: ServiceToken <SERVICE_TOKEN>'\n"
parameters:
- in: path
name: workspace
required: true
schema:
type: string
description: Workspace slug (e.g. `staging`, `production`).
- in: path
name: signing_key_uid
required: true
schema:
type: string
description: Signing key `uid` (e.g. `signing_key_...`).
responses:
'204':
description: Signing key deleted - no response body.
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
tags:
- Ws Signing Key
/v1/{workspace}/ws_signing_key/{signing_key_uid}/roll/:
post:
summary: Roll Workspace Signing Key
description: 'Roll a signing key. Generates a new signing key that replaces the existing active key. The previous key is marked `rolled`.
The new `private_key_pem` and `private_key_base64` are returned **only once** in this response - store them securely.
'
operationId: roll-workspace-signing-key
servers:
- url: https://management-api.suprsend.com
security:
- ServiceTokenAuth: []
x-codeSamples:
- lang: cURL
label: Roll Workspace Signing Key
source: "curl -X POST \"https://management-api.suprsend.com/v1/{workspace}/ws_signing_key/{signing_key_uid}/roll/\" \\\n --header 'Authorization: ServiceToken <SERVICE_TOKEN>' \\\n --header 'Content-Type: application/json'\n"
parameters:
- in: path
name: workspace
required: true
schema:
type: string
description: Workspace slug (e.g. `staging`, `production`).
- in: path
name: signing_key_uid
required: true
schema:
type: string
description: Signing key `uid` to roll (e.g. `signing_key_...`).
responses:
'201':
description: Signing key rolled. A new signing key is created and its private key material is returned once.
content:
application/json:
schema:
$ref: '#/components/schemas/ManagementWorkspaceSigningKeyCreateResponse'
example:
id: ws_signk_exampleId02
uid: signing_key_exampleUid02
status: active
allowed_domains: null
expiry_at: null
private_key_pem: '-----BEGIN PRIVATE KEY-----
...redacted...
-----END PRIVATE KEY-----
'
private_key_base64: LS0tLS1CRUdJTi...redacted...
created_at: '2026-04-21T12:37:46.216734Z'
created_by:
name: System User
email: org_XXXXXXXXXXXXXXXXXXXXXX@systemuser.suprsend.com
rolled_at: null
rolled_by: null
deleted_at: null
deleted_by: null
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
tags:
- Ws Signing Key
components:
responses:
AuthenticationError:
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: 401
error_code: authentication_failed
type: AuthenticationFailed
message: Invalid service token.
detail: Invalid service token.
NotFoundError:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: 404
error_code: not_found
type: NotFound
message: workspace 'demo' not found
detail: workspace 'demo' not found
schemas:
ManagementActor:
type: object
description: Identity that performed an action (created, updated, rolled, deleted, rotated).
nullable: true
properties:
name:
type: string
description: Display name of the actor.
example: System User
email:
type: string
description: Email address of the actor.
example: user@example.com
ManagementWorkspaceSigningKeyListResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/ManagementListMeta'
results:
type: array
items:
$ref: '#/components/schemas/ManagementWorkspaceSigningKey'
ManagementListMeta:
type: object
description: Pagination metadata (when applicable)
properties:
count:
type: integer
description: Total items matching the query
limit:
type: integer
nullable: true
description: Maximum number of results returned per page.
offset:
type: integer
nullable: true
description: Starting position of the returned results.
ManagementWorkspaceSigningKeyCreateResponse:
allOf:
- $ref: '#/components/schemas/ManagementWorkspaceSigningKey'
- type: object
properties:
private_key_pem:
type: string
description: PEM-encoded private key. Returned only at creation and on roll - store it securely and never commit to source control.
example: '-----BEGIN PRIVATE KEY-----
...redacted...
-----END PRIVATE KEY-----
'
private_key_base64:
type: string
description: Base64-encoded private key. Returned only at creation and on roll.
example: LS0tLS1CRUdJTi...redacted...
ManagementWorkspaceSigningKey:
type: object
description: Signing key used to verify signed payloads.
properties:
id:
type: string
description: Unique identifier of the signing key.
example: ws_signk_exampleId01
uid:
type: string
description: Signing key uid used in path parameters for roll/delete.
example: signing_key_exampleUid01
status:
type: string
description: Status of the signing key.
enum:
- active
- rolled
allowed_domains:
type: array
nullable: true
items:
type: string
description: Domains allowed to use this signing key.
expiry_at:
type: string
format: date-time
nullable: true
description: Timestamp when the signing key expires.
created_at:
type: string
format: date-time
description: Timestamp when the signing key was created.
created_by:
$ref: '#/components/schemas/ManagementActor'
rolled_at:
type: string
format: date-time
nullable: true
description: Timestamp when the signing key was rolled.
rolled_by:
$ref: '#/components/schemas/ManagementActor'
deleted_at:
type: string
format: date-time
nullable: true
description: Timestamp when the signing key was deleted.
deleted_by:
$ref: '#/components/schemas/ManagementActor'
ErrorResponse:
type: object
properties:
code:
type: integer
description: HTTP status code
error_code:
type: string
description: Specific error code identifier
type:
type: string
description: Error type classification
message:
type: string
description: Human-readable error message
detail:
type: string
description: Additional error details
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: API_Key
description: Pass as `Bearer <API_KEY>`. Get API Key from SuprSend dashboard Developers -> API Keys section.
ServiceTokenAuth:
type: apiKey
in: header
name: ServiceToken <token>
description: You can get Service Token from [SuprSend dashboard -> Account Settings -> Service Tokens](https://app.suprsend.com/en/account-settings/service-tokens) section.
sec0:
type: apiKey
in: header
name: Authorization
x-bearer-format: bearer
description: Bearer authentication header of the form `Bearer <token>`, where <token> is your auth token.
x-readme:
headers: []
explorer-enabled: true
proxy-enabled: true
x-readme-fauxas: true