Easy2257
API Reference

Log Content

POST /api/v1/solo-accounts/{accountId}/content: register a content depiction.

Send the compliance copy. Easy2257 keeps a copy of every depiction it records (28 CFR 75.2(a)(1)(iii)). Declare it on this call as complianceCopy: { mimeType, sizeBytes } using your lowest-resolution rendition (images under 5 MB, video under 500 MB; quality does not matter), PUT the file to complianceCopyUpload.url with the Content-Type header given (the URL is valid 15 minutes and bound to the declared size and type), then call POST /api/v1/solo-accounts/{accountId}/content/{externalContentId}/compliance-copy to confirm. Easy2257 verifies size and type, hashes the bytes itself and fires content_log.copy_stored. Platform-plan partners must declare a copy; the JuicyStarz pipeline may omit it for now and the depiction shows as complianceCopy: "missing". Re-posting the same externalContentId while the copy is pending returns a fresh upload URL.

Always send externalContentId. It is the idempotency key, and it is the only handle you can address later for a takedown. A depiction logged without one cannot be removed through the API.

POST
/api/v1/solo-accounts/{accountId}/content

Authorization

BearerAuth
AuthorizationBearer <token>

Partner API key from partner.easy2257.com/api-keys. Only ez_live_ keys are accepted. A key beginning with ez_test_ is rejected with 403 and code TEST_MODE_UNAVAILABLE before any handler runs: there is no sandbox, and every handler writes production records, provisions real users, and sends real email. New partner accounts start with a test key, so create a live key before your first call.

In: header

Path Parameters

accountId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://easy2257.com/api/v1/solo-accounts/cmd4k2x9p0001qz8h3v7ftg2a/content" \  -H "Content-Type: application/json" \  -d '{    "contentUrl": "https://your-cdn.com/videos/abc123.mp4",    "title": "April 2026 Scene"  }'
{
  "contentLogId": "cmd4k7b2r0003qz8hd1n5wq9e",
  "depictionId": "cmd4k7b2r0004qz8h0m2c8t1v",
  "duplicate": true,
  "complianceCopy": "stored",
  "complianceCopyUpload": {
    "url": "http://example.com",
    "method": "PUT",
    "headers": {
      "Content-Type": "video/mp4"
    },
    "expiresAt": "2026-08-21T18:15:00Z",
    "maxBytes": 48213377
  }
}
{
  "contentLogId": "cmd4k7b2r0003qz8hd1n5wq9e",
  "depictionId": "cmd4k7b2r0004qz8h0m2c8t1v",
  "createdAt": "2026-04-22T12:00:00Z",
  "complianceCopy": "stored",
  "complianceCopyUpload": {
    "url": "http://example.com",
    "method": "PUT",
    "headers": {
      "Content-Type": "video/mp4"
    },
    "expiresAt": "2026-08-21T18:15:00Z",
    "maxBytes": 48213377
  }
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "Too many requests. Please slow down.",
  "retryAfter": 14,
  "limit": 60,
  "remaining": 0,
  "reset": 1714000060000
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}