Passo Developers

Concepts

Workspaces, roles, membership, and the creator-video vocabulary the API and tools use.

The API uses a handful of nouns consistently. The most important one is not named what you would expect, so start there.

A brand is a workspace

The word that trips everyone up

In Passo, a brand's account is a workspace. The word "brand" is reserved for a third-party brand that appears in a creator's video — a product being featured. So when you mean "the company whose account this is", the API calls that a workspace, never a brand. Every list, every id, every membership hangs off workspaces.

A workspace is the tenant: a brand's account, its members, its jobs, and the videos delivered to it. It has a name and a URL slug. This is the object list_workspaces returns and the one everything else references.

Roles

Membership carries a role, ordered from least to most privileged:

RoleCan
viewerSee the workspace and its content.
memberThe above, plus create and act on jobs, deals, and reviews.
adminThe above, plus manage membership and workspace settings.

Roles are ordered, so a check is "at least a member", not an exact match.

Function

Orthogonal to role is a function — the team axis — either marketing (the ordinary brand user) or compliance. It defaults to marketing, and only an admin can assign a non-default value. Function does not widen or narrow a role; it marks which review a member performs when a workspace requires a separate compliance sign-off.

Membership

A user joins a workspace through an invite, which they accept to become a member with a role and function. You can be a member of many workspaces; that is why the tools and endpoints are workspace-scoped and paginate.

The other side: creators, agencies, and the work

Videos are delivered to a workspace by people outside it. That side has its own nouns.

  • Creator — the person or entity who delivers video. A creator can be onboarded by an agency before they have a Passo login, and claim the account later, so a creator is not always a user.
  • Agency — represents a roster of creators and acts on their behalf. Agencies have their own viewer / member / admin roles, over their roster rather than over a workspace.
  • Job — a piece of work a workspace posts, with a title and a status of open (accepting deliveries) or closed.
  • Deal — the assignment of one creator to one job. A deal is the binding that connects a creator to a workspace's work; a video is delivered against a deal.

Videos and versions

A video is a single delivery: it belongs to a workspace and a creator, was delivered against a deal, and points at its current version. The video is the thing under review; its content lives in versions.

A video version is one cut. Uploading a revision creates a new version and supersedes the previous one, so a video accumulates a version history — which is what get_video_review returns. Each version carries two independent status fields, and the difference matters:

  • muxStatus — where the file is in the processing pipeline: preparing, ready (playable, has a playbackId), or errored. This is about the media.
  • state — the review decision: in_review, changes_requested, approved, or rejected. This is about the human verdict.

A cut can be ready to watch while still in_review, or approved while a newer cut sits in_review above it. When an agent asks "what needs my attention", it means state: in_review — which is exactly what list_videos_awaiting_review filters to.

How this maps to the surface

Everything above is reachable two ways, under the same permissions:

  • MCP tools — task-shaped operations for agents: your workspaces, your videos, the review queue, a video's full history. See the tools reference.
  • REST endpoints — resource-shaped operations for code: workspaces, jobs, deals, videos, members, and invites. See the API reference.

Both run under your row-level security, so either way you see exactly the workspaces, creators, and videos your account can — see Authentication.

On this page