Collab Scenes

Create a collab scene

Opens a multi-performer scene and emails every performer a magic link. Identify the uploader with exactly one of uploaderAccountId or uploaderExternalUserId; either must resolve to an active solo account under your partner account. The scene record costs $5 (500 cents), plus $25 (2500 cents) for each performer who does not already have an active Easy2257 solo account; performers who do sign at no extra charge. The response reports that split only as a scene-level aggregate, and performer entries never say which path an individual is on. Not idempotent. Every call creates a new scene, sends fresh invitation emails, and charges fees, so guard it behind your own dedupe. Content stays on your platform until the collab_scene.greenlit webhook fires. The uploader's attestation is the producer attestation of record, so capture it from a real click event.

post/api/v1/collab-scenes

Request

  • Base URL: https://easy2257.com
  • URL: https://easy2257.com/api/v1/collab-scenes
  • Auth: HTTP bearer

Request body

uploaderAccountIdstring

The accountId Easy2257 issued when you provisioned the uploader's solo account. Send exactly one of uploaderAccountId or uploaderExternalUserId. Either must resolve to an active solo account under your partner account, otherwise the call returns 400 with code uploader_not_solo_active.

uploaderExternalUserIdstring

Your own user id for the uploader, exactly as you supplied it as externalUserId at provisioning. Alternative to uploaderAccountId; send one or the other, never both.

titlestring required
shootDatestring date-time
callbackUrlstring uri required

Required, and stored for your reference only. Scene events go to the endpoints registered in the partner portal.

Example request

{
  "uploaderAccountId": "cmd4k9f7t0002qz8hw5r1jd8n",
  "uploaderExternalUserId": "user_12345",
  "title": "April 2026 Scene",
  "shootDate": "2026-04-20T00:00:00Z",
  "performers": [
    {
      "email": "performer@example.com"
    }
  ],
  "uploaderAttestation": {
    "ip": "203.0.113.7",
    "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "clickedAt": "2026-04-24T18:00:00Z",
    "attestationText": "I coordinated this scene, all performers were 18+ and consented on set"
  },
  "callbackUrl": "https://your-platform.com/webhooks/ez2257"
}

Response

Scene created and invitation emails sent.

sceneIdstring required
status'pending_signatures' | 'greenlit' | 'blocked' | 'cancelled' required

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.

expiresAtstring date-time required

14 days from creation. Unsigned at that point and the scene is blocked.

Example response

{
  "sceneId": "cmd5r9a4t0001qz8hb6k2m3xd",
  "performers": [
    {
      "email": "performer@example.com"
    }
  ],
  "fees": {
    "sceneFeeCents": 500,
    "onboardingFeeCents": 2500,
    "totalCents": 3000,
    "stripeChargeId": "pi_3NabcDEfghIJklmn",
    "billedTo": "uploader_card"
  },
  "expiresAt": "2026-05-08T18:00:00Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.