Sequenzy Media API
The Media API from Sequenzy — 3 operation(s) for media.
The Media API from Sequenzy — 3 operation(s) for media.
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/sequenzy:sequenzy-media-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: Sequenzy Media API
description: Sequenzy API for managing subscribers, tags, events, sequences, and transactional emails
version: 1.0.0
servers:
- url: https://api.sequenzy.com/api/v1
description: Production server
- url: https://api.sequenzy.com/v1
description: Legacy production server alias
security:
- bearerAuth: []
tags:
- name: Media
paths:
/media/upload-url:
post:
operationId: createEmailImageUploadUrl
summary: Create email image upload URL
description: Returns an authenticated API URL for a block-ready email image. PUT the exact bytes to uploadUrl using the same API credentials, then register the key with POST /media/complete-upload. The public object does not exist until its bytes pass server-side validation.
tags:
- Media
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- filename
- contentType
- fileSizeBytes
properties:
filename:
type: string
contentType:
type: string
example: image/png
fileSizeBytes:
type: integer
minimum: 1
maximum: 10485760
responses:
'200':
description: Upload URL created
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
uploadUrl:
type: string
publicUrl:
type: string
key:
type: string
fileName:
type: string
'400':
description: Unsupported image type or size
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: Uploads not configured
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/media/upload-bytes:
put:
operationId: uploadEmailImageBytes
summary: Upload validated email image bytes
description: Uploads the exact bytes to the authenticated URL returned by POST /media/upload-url. The server enforces the requested size, verifies the file signature, and creates the public object only once.
tags:
- Media
parameters:
- in: query
name: key
required: true
schema:
type: string
- in: query
name: filename
required: true
schema:
type: string
- in: query
name: contentType
required: true
schema:
type: string
- in: query
name: fileSizeBytes
required: true
schema:
type: integer
minimum: 1
maximum: 10485760
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
responses:
'200':
description: Image bytes validated and stored
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
key:
type: string
publicUrl:
type: string
'400':
description: Invalid size, key, content type, or image bytes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Upload URL already used
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: Uploads are not configured, or the upload service or database is temporarily unavailable. Retry-After is present for a transient database failure.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/media/complete-upload:
post:
operationId: completeEmailImageUpload
summary: Register uploaded email image
description: Idempotently registers a completed company-scoped image upload in the shared media library and returns its hosted URL.
tags:
- Media
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- key
- filename
- contentType
- fileSizeBytes
- altText
properties:
key:
type: string
filename:
type: string
contentType:
type: string
example: image/png
fileSizeBytes:
type: integer
minimum: 1
maximum: 10485760
width:
type: integer
minimum: 1
maximum: 20000
height:
type: integer
minimum: 1
maximum: 20000
altText:
type: string
maxLength: 500
responses:
'200':
description: Image registered
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
asset:
type: object
properties:
id:
type: string
filename:
type: string
url:
type: string
mimeType:
type: string
size:
type: string
width:
type:
- string
- 'null'
height:
type:
- string
- 'null'
altText:
type:
- string
- 'null'
companyId:
type: string
createdAt:
type: string
format: date-time
'400':
description: Invalid or cross-company upload
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Image changed while completion was verifying it
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: Uploads not configured
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
headers:
RetryAfter:
description: Number of seconds to wait before retrying the request.
schema:
type: integer
minimum: 1
example: 1
schemas:
InputIssue:
type: object
properties:
path:
type: string
description: Dotted field path, such as `audience.subscriberIds[0]`. Empty when the problem is with the request body itself.
example: kind
message:
type: string
description: What is wrong with the field.
example: must be "add_tags"
allowedValues:
type: array
description: Accepted values when the field only takes a fixed set of values.
items: {}
example:
- add_tags
required:
- path
- message
Error:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
code:
type: string
description: Optional stable machine-readable error discriminator when available.
example: COMPANY_CREATE_REQUIRES_PERSONAL_KEY
retryable:
type: boolean
description: Whether retrying the request can recover from the error.
issues:
type: array
description: Field-level problems with the request, when the endpoint reports them. Up to ten entries; `error` summarizes the first three.
items:
$ref: '#/components/schemas/InputIssue'
required:
- error
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API key passed as Bearer token