The Platform API

Media & Content

Manage your videos, ask questions, and build applications with the Platform API. Explore the operations below for request details, responses, and examples.

Media & Content

Upload and manage non-video content (images, audio, documents), and list all content — videos and media together — in one call.

POST/api/v1/projects/:projectId/media/uploadUpload media (multipart: images / audio / docs)

Upload media (multipart: images / audio / docs)

Multipart form field file. Detected type drives downstream handling.

POST/api/v1/projects/:projectId/media/upload-from-urlUpload media from a URL

Upload media from a URL

{ "url": "https://example.com/image.jpg", "name": "Front shelf" }
GET/api/v1/projects/:projectId/contentUnified list of all content (videos + media)

Unified list of all content (videos + media)

Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/content using your project key or user token.

GET/api/v1/projects/:projectId/mediaList media items

List media items

Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/media using your project key or user token.

GET/api/v1/projects/:projectId/media/:mediaIdGet a media item

Get a media item

Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/media/:mediaId using your project key or user token.

PUT/api/v1/projects/:projectId/media/:mediaIdBetaUpdate media metadata

Update media metadata

Beta: this operation may change before it is final.

Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/media/:mediaId using your project key or user token.

DELETE/api/v1/projects/:projectId/media/:mediaIdDelete media

Delete media

Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/media/:mediaId using your project key or user token.

POST/api/v1/projects/:projectId/media/:mediaId/processAnalyze and moderate a media item

Analyze and moderate a media item

Queues an image or text item for analysis and moderation. Returns 202. Needs write access.

{ "mediaId": "MEDIA_ID", "queued": true }
GET/api/v1/projects/:projectId/media/:mediaId/statusGet processing status

Get processing status

status moves from uploaded to processing, then analyzed, completed or error.

{
            "mediaId": "MEDIA_ID",
            "mediaType": "image",
            "role": "content",
            "status": "completed",
            "analyzed": true,
            "moderated": true,
            "decision": "allow",
            "error": null
          }
GET/api/v1/projects/:projectId/media/:mediaId/moderationGet moderation result

Get moderation result

decision is allow, flag or ban; a recorded human review takes priority and is shown in human_review.

{
            "mediaId": "MEDIA_ID",
            "mediaType": "image",
            "status": "completed",
            "decision": "flag",
            "confidence": 82,
            "reasoning": "A weapon is visible in the foreground.",
            "flags": ["weapons"],
            "categories_scanned": ["weapons", "violence", "nudity"],
            "human_review": null,
            "completedAt": "2026-10-02T09:00:12.000Z"
          }
PUT/api/v1/projects/:projectId/media/:mediaId/reviewSubmit review decision

Submit review decision

decision: allowed, flagged or banned. Overrides the automatic result. Needs review access.

{ "decision": "allowed", "reason": "Toy replica, not a real weapon" }