Skip to content

Authentication

drop.mov API uses three authentication methods depending on the context.

Authentication Methods

1. Bearer Token (JWT)

Used for authenticated user operations (/v1/user/*).

http
Authorization: Bearer <jwt_token>

The JWT token is obtained from Supabase Auth after user login.

Example:

bash
curl -X GET https://api.drop.mov/v1/user \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

2. Manager Token

Used for media group management operations (/v1/manager/*).

http
Drop-Manager-Token: <manager_token>

Manager tokens are returned when creating a media group or can be retrieved from existing groups.

Example:

bash
curl -X GET https://api.drop.mov/v1/manager \
  -H "Drop-Manager-Token: mgr_abc123..."

3. Viewer Token

Used for accessing shared media (/v1/viewer/*).

http
Drop-Viewer-Token: <viewer_token>

Viewer tokens are created when generating share links.

Example:

bash
curl -X GET https://api.drop.mov/v1/viewer \
  -H "Drop-Viewer-Token: vwr_xyz789..."

Token Scopes

Manager Token Capabilities

  • Get/update/delete media group
  • List/create/update/revoke shares
  • Delete media sources
  • Get download/play URLs
  • Full comment access (CRUD)

Viewer Token Capabilities

Depends on share permissions:

PermissionCapability
(always)Get media group info
(always)Get play URLs
can_downloadGet download URLs
can_view_commentList comments
can_post_commentCreate/edit own comments

Error Responses

Missing Token

json
{
  "success": false,
  "error": {
    "errorType": "missing_token",
    "error": "Manager token is required"
  }
}

HTTP Status: 401

Invalid Token

json
{
  "success": false,
  "error": {
    "errorType": "invalid_token",
    "error": "Invalid or expired token"
  }
}

HTTP Status: 401

Expired Token

json
{
  "success": false,
  "error": {
    "errorType": "token_expired",
    "error": "Share link has expired"
  }
}

HTTP Status: 401

Security Best Practices

Token Storage

  • Browser: Store in memory or secure httpOnly cookies
  • Server: Use environment variables
  • Never: Commit tokens to version control

Token Rotation

Manager and Viewer tokens do not expire by default, but:

  • Viewer tokens can have expiration dates
  • Tokens can be revoked at any time

HTTPS Only

Always use HTTPS in production. HTTP requests to the production API are rejected.

SDK Authentication

Using the @dropmov/client SDK simplifies authentication:

typescript
import { DropClient } from '@dropmov/client';

// User context with JWT
const client = new DropClient({
  origin: 'https://api.drop.mov',
  getAccessToken: async () => {
    const session = await supabase.auth.getSession();
    return session.data.session?.access_token ?? null;
  },
});

// Manager context
const managerCtx = client.manager(managerToken);

// Viewer context
const viewerCtx = client.viewer(viewerToken);

drop.mov ― a kumo™ product