Easy2257 · Schema

CollabSceneDetailResponse

ComplianceRecordsAdult ContentSoftwarePlatform

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.
View JSON Schema on GitHub

JSON Schema

easy2257-com-collab-scene-detail-response-schema.json Raw ↑
{
  "$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.
All 92 tools →

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.