Zest Subscriptions API
Create one or more subscriptions for a single SPV.
Create one or more subscriptions for a single SPV.
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/zest-subscriptions-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: Zest equity public api Authentication Subscriptions API
version: 0.1.0
description: OAuth 2.0 JWT-Bearer assertion grant. Exchange a partner-signed JWT for a short-lived bearer access token, then send that token in the Authorization header on every partner API call.
servers:
- url: https://sandbox-api.zestequity.com
description: Staging
tags:
- name: Subscriptions
description: Create one or more subscriptions for a single SPV.
paths:
/v1/spvs/{spv_slug}/subscriptions:
post:
tags:
- Subscriptions
summary: Create subscriptions for one SPV
description: 'Creates one or more subscription rows for a single SPV. Per investor: lump sum + share class. `Idempotency-Key` is optional.'
operationId: createSubscriptions
parameters:
- required: true
schema:
type: string
title: Spv Slug
name: spv_slug
in: path
- required: false
schema:
type: string
title: Idempotency-Key
name: Idempotency-Key
in: header
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionBulkCreate'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionBulkResponse'
'400':
description: Validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerErrorResponse'
'401':
description: Invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerErrorResponse'
'403':
description: Service not provisioned for partner API
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerErrorResponse'
'404':
description: SPV not found
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerErrorResponse'
'409':
description: Idempotency-Key conflict (different body)
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerErrorResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
components:
schemas:
SubscriptionCreateRow:
properties:
partnerSubscriptionId:
type: string
title: Partnersubscriptionid
description: Optional partner-side subscription id; echoed on the response for correlation.
example: acme-sub-9921
zestPersonId:
type: string
title: Zestpersonid
example: psn_abc123
lumpSum:
type: object
title: Lumpsum
description: '{currency, value} object — currency is ISO 4217, value is a decimal string.'
example:
currency: USD
value: '50000.00'
shareClassSlug:
type: string
title: Shareclassslug
example: sc_classA
type: object
required:
- zestPersonId
- lumpSum
- shareClassSlug
title: SubscriptionCreateRow
SubscriptionBulkCreate:
properties:
subscriptions:
items:
$ref: '#/components/schemas/SubscriptionCreateRow'
type: array
title: Subscriptions
type: object
required:
- subscriptions
title: SubscriptionBulkCreate
SubscriptionBulkResponse:
properties:
results:
items:
$ref: '#/components/schemas/SubscriptionResult'
type: array
title: Results
type: object
required:
- results
title: SubscriptionBulkResponse
SubscriptionResult:
properties:
partnerSubscriptionId:
type: string
title: Partnersubscriptionid
subscriptionSlug:
type: string
title: Subscriptionslug
spvSlug:
type: string
title: Spvslug
personId:
type: string
title: Personid
status:
type: string
title: Status
lumpSum:
type: object
title: Lumpsum
shareClassSlug:
type: string
title: Shareclassslug
type: object
required:
- subscriptionSlug
- spvSlug
- personId
- status
- lumpSum
- shareClassSlug
title: SubscriptionResult
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
PartnerErrorResponse:
properties:
detail:
type: string
title: Detail
default: 'ex: Something went wrong'
examples:
- Something went wrong
errorId:
type: string
title: Errorid
code:
type: string
title: Code
description: Stable top-level error code (see PartnerErrorCode enum).
validationErrors:
items:
$ref: '#/components/schemas/PartnerValidationError'
type: array
title: Validationerrors
description: Populated only when code='validation_error'.
type: object
required:
- code
title: PartnerErrorResponse
PartnerValidationError:
properties:
attribute:
type: string
title: Attribute
description: Attribute path (e.g. 'deal_name', 'share_class.name').
code:
type: string
title: Code
description: Stable validation error code (see ValidationErrorCode enum).
message:
type: string
title: Message
description: Human-readable message.
type: object
required:
- attribute
- code
- message
title: PartnerValidationError
securitySchemes:
HTTPBearer:
type: http
scheme: bearer