openapi: 3.1.0
info:
title: Shipments Address Connections API
version: 3.0.0
description: The Shipments API allows you to create and announce, retrieve, and cancel outgoing shipments and their associated parcels within the Sendcloud platform.
contact:
name: Sendcloud API Support
email: contact@sendcloud.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://panel.sendcloud.sc/api/v3
description: Sendcloud Production
tags:
- name: Connections
paths:
/event-subscriptions/connections:
post:
summary: Create a connection
description: Create a new connection to an external endpoint where event notifications will be delivered.
tags:
- Connections
operationId: sc-public-v3-scp-post-create_connection
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/create-a-connection
content: "Create a new connection that defines an external endpoint for event delivery.\n\n**Webhook connections** require a `url` and optionally authentication configuration. Supported authentication types are `none`, `bearer`, `basic`, and `api_key`.\n\n**Klaviyo connections** require only the `type` field set to `klaviyo` with an empty `configuration` object. After creating the connection, use the [Start OAuth2 authorization](/api/v3/event-subscriptions/start-oauth2-authorization) endpoint to connect your Klaviyo account.\n\n\n Webhook URLs must be publicly accessible and respond with a `2xx` status code to acknowledge event delivery.\n"
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/connection-create-request'
examples:
WebhookConnection:
summary: Create a webhook connection with bearer auth
value:
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: bearer
auth_config:
token: my-secret-token
extra_headers:
X-Custom-Header: my-value
WebhookConnectionNoAuth:
summary: Create a webhook connection without auth
value:
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: none
KlaviyoConnection:
summary: Create a Klaviyo connection
value:
type: klaviyo
configuration: {}
responses:
'201':
description: Created
content:
application/json:
schema:
description: Connection created
type: object
properties:
data:
$ref: '#/components/schemas/connection'
examples:
WebhookCreated:
summary: Webhook connection created
value:
data:
id: 1
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: bearer
extra_headers:
X-Custom-Header: my-value
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-15T10:30:00Z'
KlaviyoCreated:
summary: Klaviyo connection created
value:
data:
id: 2
type: klaviyo
configuration: {}
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-15T10:30:00Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
ValidationError:
summary: Validation error
value:
errors:
- detail: This field is required.
status: '400'
source:
pointer: /data/type
code: required
'429':
description: Throttled
get:
summary: List connections
description: Retrieve all connections for the authenticated user's organization.
tags:
- Connections
operationId: sc-public-v3-scp-get-list_connections
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/list-connections
parameters:
- schema:
type: string
enum:
- webhook
- klaviyo
in: query
name: connection_type
description: Filter by connection type.
responses:
'200':
description: OK
content:
application/json:
schema:
description: List of connections
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/connection'
required:
- data
examples:
ListConnections:
summary: List of connections
value:
data:
- id: 1
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: bearer
extra_headers:
X-Custom-Header: my-value
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-15T10:30:00Z'
- id: 2
type: klaviyo
configuration: {}
created_at: '2026-01-16T09:00:00Z'
updated_at: '2026-01-16T09:00:00Z'
'429':
description: Throttled
/event-subscriptions/connections/{id}:
parameters:
- schema:
type: integer
in: path
name: id
description: The id of the connection.
required: true
get:
summary: Get a connection
description: Retrieve a specific connection by its id.
tags:
- Connections
operationId: sc-public-v3-scp-get-connection
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/get-a-connection
responses:
'200':
description: OK
content:
application/json:
schema:
description: Connection details
type: object
properties:
data:
$ref: '#/components/schemas/connection'
examples:
GetConnection:
summary: Get a webhook connection
value:
data:
id: 1
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud
auth_type: bearer
extra_headers:
X-Custom-Header: my-value
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-15T10:30:00Z'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
patch:
summary: Update a connection
description: Update an existing connection by its id. Only the fields provided in the request body will be updated.
tags:
- Connections
operationId: sc-public-v3-scp-patch-connection
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/update-a-connection
content: "Update the configuration of an existing connection.\n\nOnly the fields provided in the request body will be updated. For example, you can update just the webhook URL or authentication settings without changing other fields.\n\n\n Updating a connection's configuration may affect all subscriptions that use this connection.\n"
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/connection-update-request'
examples:
UpdateWebhookUrl:
summary: Update the webhook URL
value:
configuration:
url: https://example.com/webhooks/sendcloud-v2
UpdateAuth:
summary: Update authentication settings
value:
configuration:
auth_type: api_key
auth_config:
header_name: X-Api-Key
api_key: my-new-api-key
responses:
'200':
description: OK
content:
application/json:
schema:
description: Updated connection
type: object
properties:
data:
$ref: '#/components/schemas/connection'
examples:
UpdatedConnection:
summary: Updated webhook connection
value:
data:
id: 1
type: webhook
configuration:
url: https://example.com/webhooks/sendcloud-v2
auth_type: api_key
extra_headers:
X-Custom-Header: my-value
created_at: '2026-01-15T10:30:00Z'
updated_at: '2026-01-20T14:00:00Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
ValidationError:
summary: Validation error
value:
errors:
- detail: Enter a valid URL.
status: '400'
source:
pointer: /data/configuration/url
code: invalid
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
delete:
summary: Delete a connection
description: Delete a specific connection by its id. Any subscriptions associated with this connection will also be deleted.
tags:
- Connections
operationId: sc-public-v3-scp-delete-connection
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
x-mint:
href: /api/v3/event-subscriptions/delete-a-connection
content: "Delete a connection and all its associated subscriptions.\n\n\n This action is irreversible. All subscriptions linked to this connection will be permanently deleted and event delivery will stop immediately.\n"
responses:
'204':
description: No Content
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
components:
schemas:
errors:
title: Errors
type: object
description: A standardized format for errors in JSON:API responses.
properties:
errors:
type:
- array
- object
items:
type: object
allOf:
- $ref: '#/components/schemas/ErrorObject'
required:
- status
- code
- detail
connection-update-request:
title: Update Connection request
description: Request body for updating an existing connection. All fields are optional.
type: object
properties:
type:
type: string
description: The type of connection.
enum:
- webhook
- klaviyo
configuration:
type: object
description: 'The configuration for the connection. The shape depends on the connection type.
For `webhook` connections, see the webhook configuration fields.
For `klaviyo` connections, configuration can be an empty object as credentials are managed via OAuth2.'
connection:
title: Connection
description: A connection defines an external endpoint where event notifications are delivered.
type: object
properties:
id:
type: integer
format: int64
minimum: 1
description: Unique identifier of the connection.
type:
type: string
description: The type of connection.
enum:
- webhook
- klaviyo
configuration:
type: object
description: The configuration for the connection. The shape depends on the connection type.
created_at:
type: string
format: date-time
description: The date and time when the connection was created, in ISO 8601 format.
updated_at:
type: string
format: date-time
description: The date and time when the connection was last updated, in ISO 8601 format.
connection-create-request:
title: Create Connection request
description: Request body for creating a new connection.
type: object
required:
- type
- configuration
properties:
type:
type: string
description: The type of connection.
enum:
- webhook
- klaviyo
configuration:
type: object
description: 'The configuration for the connection. The shape depends on the connection type.
For `webhook` connections, see the webhook configuration fields.
For `klaviyo` connections, configuration can be an empty object as credentials are managed via OAuth2.'
ErrorObject:
title: Error
type: object
description: Error in a JSON:API error format
properties:
id:
type: string
description: A unique identifier for the error.
links:
type: object
description: A set of hyperlinks that provide additional information about the error.
properties:
about:
type: string
description: A URL that provides additional information about the error.
status:
type: string
format: int32
description: The HTTP status code of the error.
minLength: 1
code:
type: string
description: A unique error code for the error, in snake case format.
minLength: 1
enum:
- unknown_field
- invalid
- forbidden
- invalid_choice
- min_value
- 'null'
- not_found
- required
- not_a_list
- non_field_errors
- authentication_failed
- validation_error
- parcel_announcement_error
title:
type: string
description: A short, human-readable summary of the error.
minLength: 1
detail:
type: string
description: A human-readable explanation of the error.
minLength: 1
source:
type: object
description: An object that identifies the source of the error within the request payload.
properties:
pointer:
type: string
description: A `JSON` pointer to the location of the error within the request payload.
parameter:
type: string
description: The name of the `query` parameter that caused the error.
header:
type: string
description: The name of the `header` parameter that caused the error.
meta:
type: object
description: Additional metadata about the error.
securitySchemes:
HTTPBasicAuth:
type: http
description: Basic Authentication using API key and secrets is currently the main authentication mechanism.
scheme: basic
OAuth2ClientCreds:
type: oauth2
description: OAuth2 is a standardized protocol for authorization that allows users to share their private resources stored on one site with another site without having to provide their credentials. OAuth2 Client Credentials Grant workflow. This workflow is typically used for server-to-server interactions that require authorization to access specific resources.
flows:
clientCredentials:
tokenUrl: https://account.sendcloud.com/oauth2/token/
scopes:
api: Default OAuth scope required to access Sendcloud API.