Properties
| Name | Type | Description |
|---|---|---|
| sceneId | string | |
| status | string | `pending_signatures`: waiting on performers. `greenlit`: everyone signed and every new performer passed ID verification. This is the only status that permits publication. `blocked`: a performer refuse |
| performerCount | integer | |
| consentedCount | integer | |
| releaseSignedCount | integer | Same field POST /extend returns, so release progress reads the same way on both endpoints. |
| refusedCount | integer | |
| performers | array | Present only for the partner that CREATED the scene, which is the partner that supplied these addresses. A partner holding only a publication on somebody else's scene receives the counts above and no |
| fees | objectnull | The creating partner's charge for the scene; null when no fee row exists. Absent entirely for a partner holding only a publication, since it is another partner's billing record. |
| expiresAt | string | |
| publications | array | Only the publications you registered. Other platforms' URLs for the same scene are never visible to you, and yours are never visible to them. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/easy2257-com/json-schema/easy2257-com-collab-scene-detail-response-schema.json",
"title": "CollabSceneDetailResponse",
"x-generated": "2026-11-06",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/easy2257-com-openapi.yml#/components/schemas/CollabSceneDetailResponse",
"type": "object",
"properties": {
"sceneId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"pending_signatures",
"greenlit",
"blocked",
"cancelled"
],
"description": "`pending_signatures`: waiting on performers. `greenlit`: everyone signed and every new performer passed ID verification. This is the only status that permits publication. `blocked`: a performer refused, or the 14-day window lapsed. `cancelled`: cancelled through the API. No refund."
},
"performerCount": {
"type": "integer"
},
"consentedCount": {
"type": "integer"
},
"releaseSignedCount": {
"type": "integer",
"description": "Same field POST /extend returns, so release progress reads the same way on both endpoints."
},
"refusedCount": {
"type": "integer"
},
"performers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email"
},
"status": {
"type": "string",
"enum": [
"pending_consent",
"consented",
"refused"
],
"description": "`pending_consent`: invited, has not yet signed. This one value covers every unsigned performer, whether or not the address already had an Easy2257 account: registration and ID verification, when needed, happen inside the magic-link flow and are never visible here, so performer status cannot be used to probe whether an email is already on Easy2257. `consented`: release signed and consent recorded. `refused`: performer declined, which blocks the scene. When the signing window lapses, the scene flips to `blocked` while unsigned performers stay `pending_consent`."
}
},
"required": [
"email",
"status"
],
"description": "Email and status, nothing else. There is deliberately no per-performer flag saying whether the address already had an Easy2257 account: that would be an account-existence oracle on arbitrary emails."
},
"description": "Present only for the partner that CREATED the scene, which is the partner that supplied these addresses. A partner holding only a publication on somebody else's scene receives the counts above and no roster."
},
"fees": {
"type": [
"object",
"null"
],
"properties": {
"sceneFeeCents": {
"type": "integer",
"description": "Base scene record fee, 500 cents."
},
"onboardingFeeCents": {
"type": "integer",
"description": "2500 cents for each performer who did not already have an active Easy2257 solo account or an approved ID check from a collab scene in the last 12 months. Performers who hold either add nothing: the fee is once per person, not once per scene. The split is an aggregate for the whole scene; it is not itemized per performer."
},
"totalCents": {
"type": "integer"
},
"charged": {
"type": "boolean",
"description": "true once a Stripe charge id is on the record. The scene is created either way: a billing failure does not block consent collection, so check this rather than assuming payment succeeded. On `billedTo: platform_invoice` it stays false: the fees are collected with your monthly platform invoice."
},
"stripeChargeId": {
"type": [
"string",
"null"
],
"description": "Despite the field name this holds the Stripe PaymentIntent id, charged off-session against the uploader's saved payment method. null when `billedTo` is `platform_invoice`."
},
"billedTo": {
"type": "string",
"enum": [
"uploader_card",
"platform_invoice"
],
"description": "Who pays the fees. `uploader_card`: charged off-session to the uploading creator's saved card. `platform_invoice`: a platform-funded account with collab scenes switched on; the fees are added to your platform's next monthly invoice, so `charged` stays false and `stripeChargeId` null."
}
},
"required": [
"sceneFeeCents",
"onboardingFeeCents",
"totalCents",
"charged",
"stripeChargeId",
"billedTo"
],
"description": "The creating partner's charge for the scene; null when no fee row exists. Absent entirely for a partner holding only a publication, since it is another partner's billing record."
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"publications": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"contentUrl": {
"type": "string",
"format": "uri"
},
"publishedAt": {
"type": "string",
"format": "date-time"
},
"removedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"required": [
"id",
"contentUrl",
"publishedAt",
"removedAt"
]
},
"description": "Only the publications you registered. Other platforms' URLs for the same scene are never visible to you, and yours are never visible to them."
}
},
"required": [
"sceneId",
"status",
"performerCount",
"consentedCount",
"releaseSignedCount",
"refusedCount",
"expiresAt",
"publications"
]
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/easy2257-com-collab-scene-detail-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
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.