> This page is for Camera to Cloud.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.frame.io/_mcp/server.

# Integrator Checklist

## C2C Integration Requirements

This checklist outlines the best practices and requirements for joining the C2C ecosystem. While not every item applies to all C2C devices or applications, the C2C Partnerships team will work with you to define specific requirements during the C2C Certification Program.

## Basic Integration Requirements

All integrations must include:

<CardGroup cols={2}>
  <Card title="User Code" icon="keyboard">
    Display a 6-digit code to the user. For web interfaces or QR code-capable devices, use the `verification_url_complete` to provide users a hyperlink option for logging in and selecting a project to connect to.
  </Card>
  <Card title="Project Display" icon="folder">
    Shows the connected project name so users can quickly verify their connection without searching through [Frame.io](http://frame.io/)'s UI
  </Card>
  <Card title="Upload Status" icon="upload">
    Clear indicators for:
    * Remaining file count
    * Total remaining file size
    * Current file upload progress
    * Status of completed, queued, and failed uploads
  </Card>
  <Card title="Network Status" icon="network-wired">
    Network connection status display and automatic access token refresh after 8 hours with no user interaction or alerts (unless there's a refresh error)
  </Card>
</CardGroup>

Additional requirements:
- Cancellable authorization flow at each step
- Socket status for real-time communication
- Firmware version header in all HTTPS endpoint calls

## Security Requirements

At [Frame.io](http://frame.io/), security is paramount. Our requirements include:

<CardGroup cols={2}>
  <Card title="HTTPS & Direct Connection" icon="shield-halved">
    * HTTPS-only requests (HTTP requests are rejected)
    * Direct device/application connection to [Frame.io](http://frame.io/) (no intermediary services)
  </Card>
  <Card title="Credential Protection" icon="lock">
    * Protected `client_secret` and `client_id` (not user-accessible)
    * Protected `access_token` and `refresh_token` credentials
    * Encrypted storage of secrets and tokens (optional but recommended)
  </Card>
</CardGroup>

## Uploader Requirements

Reliable media upload is crucial, especially in challenging conditions. Integrations must:

<CardGroup cols={2}>
  <Card title="Upload Features" icon="upload">
    * Support automatic uploads either in real-time during recording (preferred) or upon file completion
    * Show clear upload status, including queue and results
    * Write files to user-accessible local storage
  </Card>
  <Card title="Queue Management" icon="list">
    Maintain a robust upload queue that handles:
    * Concurrent uploads
    * Network interruptions
    * Power cycles
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Error Handling" icon="triangle-exclamation">
    Implement automatic retry for:
    * Network issues
    * Power interruptions
    * Non-fatal errors (timeouts, network errors, expired tokens)
  </Card>
  <Card title="Upload Control" icon="play">
    * Resume uploads from last successful chunk
    * Honor **PAUSED** state
    * Handle AWS non-fatal errors
    * Manage corrupted media without blocking other uploads
  </Card>
</CardGroup>

<Card title="Upload Options" icon="sliders">
  Provide flexible upload options:
  * Toggle automatic/manual uploads
  * Individual/bulk file selection
  * File type prioritization (optional)
  * Queue prioritization (optional)
  * Parallel uploads (optional)
  * Allow cancellation of individual or all uploads
</Card>

## Networking Requirements

Integrations must:

<CardGroup cols={2}>
  <Card title="Speed & Security" icon="gauge-high">
    * Achieve minimum 50Mbps upload speeds (network conditions permitting)
    * Support WPA2 WiFi security (Ethernet optional but recommended)
  </Card>
  <Card title="Network Management" icon="network-wired">
    * Handle DHCP and static IP
    * Display clear network status (connection type, speed, health)
    * Switch networks without project re-pairing
    * Save known WiFi networks
  </Card>
</CardGroup>

## Testing Requirements

C2C is designed for challenging conditions, requiring thorough testing across:

<CardGroup cols={2}>
  <Card title="Network Configurations" icon="network-wired">
    Test all applicable connection types:
    * Commercial router with:
      - Hardline WAN
      - Bonded cellular modem
      - Commercial cellular modem
      - Hotspot-style modem
    * Meshed router setups (including 802.11r FT protocol)
    * Direct connections to various modem types
  </Card>
  <Card title="Resilience Testing" icon="bolt">
    * Unexpected power outages
    * Network disconnections
    * ISP issues
    * Corrupted media handling
    * Offline asset creation and reconnection
  </Card>
</CardGroup>

## Workflow Requirements

C2C is an ecosystem, not just a feature. Device/application-specific requirements include:

<CardGroup cols={2}>
  <Card title="SDI/HDMI Recording" icon="video">
    * Automatic recording trigger from camera
    * Flexible camera options
    * Timecode offset adjustment
    * Manual recording capability
    * Consistent filename handling
    * Accurate timecode synchronization
  </Card>
  <Card title="Proxy Files" icon="file-video">
    * Matching filename/timecode/metadata with hero file/OCF
    * LTE-optimized (1-12Mbps bitrate)
    * Standard codec support for video and audio
  </Card>
</CardGroup>

<Card title="General Requirements" icon="list-check">
  * Timecode streams for video/audio
  * Multi-format upload support (Proxy, OCF, LUT, WAV, RAW, JPG, HEIF, TIFF)
  * Project name change handling (use `project_id` instead of name strings)
</Card>

## Quality Assurance

At [Frame.io](http://frame.io/), quality is essential. Key test areas include:

<CardGroup cols={2}>
  <Card title="Basic Functionality" icon="check">
    * Stable launch and operation
    * Project connection
    * Hardware code generation
    * Login/logout capability
    * Project/user info display
    * Device management
    * Asset upload
    * Format support
  </Card>
  <Card title="Technical Requirements" icon="gear">
    * Upload resumption after interruptions
    * Progress display
    * Network status indication
    * 8-hour connection persistence
    * Cancellable authorization
    * Direct Frame.io connection
    * Credential security
    * Network speed optimization
  </Card>
</CardGroup>

## Future Improvements

The [Frame.io](http://frame.io/) Camera to Cloud API evolves continuously. While maintaining backward compatibility, we welcome ongoing dialogue about future developments to keep our API aligned with real-world usage.

## That's all, folks!

Congratulations on completing the UC2CIG (University of C2C Integration Guides)! We hope you found this guide valuable.

Please share any feedback about unclear or missing information, or reach out with C2C-related questions. We're here to help!

If you haven't already, please review the [Implementing C2C: Setting Up](./implementing-c2c-setting-up) guide before proceeding.

You'll need the `access_token` obtained during the [authentication and authorization process](./implementing-c2c-authentication-and-authorization).

This checklist builds on the [Basic Upload guide](./how-to-basic-upload) and [Advanced Uploads guide](./how-to-advanced-uploads).