Trouble Accessing Project Comments via API (Webhook & OAuth Both Failing)

Hi everyone,

I’m trying to build a workflow that automatically pulls comment data from Frame.io and logs it into Google Sheets, using either polling or webhooks. I’ve hit several roadblocks and could use some guidance.

The Goal

Automatically fetch Frame.io comment data — ideally using a webhook — and process/classify it via an external script running in Docker, then log structured rows into a connected Google Sheet.

What I’ve Tried

  1. Polling Method (API Token)
  • I authenticated with a valid Team-level token.
  • Called GET /v2/teams/{team_id}/projects
  • Then tried GET /v2/projects/{project_id}/comments for each returned project.
  • :cross_mark: All returned 404 Not Found, even though the project list was real and populated.
  1. Polling Method (OAuth Token)
  • Successfully went through the OAuth 2.0 flow, using client_credentials and redirect via a Flask server.
  • Got a valid access token with scopes:
    offline asset.read comment.read team.read project.read
  • Tried calling GET /v2/comments → 404 (understood this isn’t a global endpoint).
  • Then tried GET /v2/projects/{project_id}/comments again → :cross_mark: still 404 for every project.
  • I’m the admin and creator of the Frame.io account and projects.
  1. Webhook Method
  • Attempted to register a webhook using both:
    • POST /v2/webhooks (legacy)
    • POST /v2/teams/{team_id}/webhooks (newer structure)
  • Every attempt returns:

json

CopyEdit

{
  "code": 404,
  "message": "Not found"
}
  • Tried both with API token and OAuth — same result.

Questions

  1. Why do valid project IDs return a 404 on /comments endpoint?
  2. Is access to project comments via API restricted by plan or permissions even for account admins?
  3. Is the /projects/{id}/comments endpoint deprecated, or scoped differently under OAuth?
  4. What is the correct way to fetch comments if you want to build a custom integration?
  5. Are webhooks gated behind enterprise plans?

I’ve put a lot of time into this and just want clarity on:

  • What’s possible.
  • What’s officially supported.
  • Whether I need to upgrade to enterprise or change strategies.

Thanks in advance — happy to share sanitized code or debug logs if helpful.

—Nick

Hi there!

You can use a webhook with comment.created event assigned to it to catch any comments when they’re created in that Team. Webhooks are not locked behind an Enterprise plan. You can create one at developer.frame.io for Frame.io Legacy (v2 endpoints). They are coming to the public V4 API soon.

For polling, I believe you’ll need to check each asset for comments rather than the Project or Team, since comments are assigned to an asset. Based on what you’re looking to do, Webhooks might be the best way to go instead of polling. You can even set this up in Zapier without the need for a Webhook if you’d like.

Hi @Fraggell, just wanted to make sure you are using the correct APIs for the proper platform. Can you confirm whether you are on the Legacy version or the latest V4 version of Frame.io? If you look at your account picker you will see it say “Legacy”, which is using the /v2 endpoints like you pointed out, or it will not say legacy, which is the current V4 product.
Screenshot 2025-05-28 at 9.18.18 AM
Screenshot 2025-05-28 at 9.18.23 AM
Screenshot 2025-05-28 at 9.18.48 AM
Screenshot 2025-05-28 at 9.19.08 AM

Thanks so much for the replies — really appreciate the guidance.

To clarify where I’m coming from:
I’m relatively new to backend/web development and trying to build a DIY workflow to pull Frame-io comment data into Google Sheets so I can classify and track feedback for my video team. Ideally I wanted to do this locally on my Unraid server using a Python app that polls or receives webhook events.

Here’s what I’ve learned (and confirmed) so far:

  • I’m on the current V4 platform, not Legacy (there’s no Legacy tag in the account picker).
  • The /v2/projects/{id}/comments endpoint (used in all polling attempts) returns 404, even when I use valid project IDs from my own team and am authenticated via OAuth.
  • I successfully went through the OAuth2 authorization flow, obtained a valid token, and can authenticate against some other endpoints (e.g., team/project listing).
  • The webhook setup via developer-frame-io does not work for my account — Frame-io v2 webhooks are not supported in V4, as far as I can tell from docs and tests.

So I’m stuck between options:

  • Polling fails because the endpoint doesn’t exist in V4.
  • Webhooks fail because the dev portal only supports Legacy (v2).
  • OAuth works, but doesn’t unlock the needed endpoints unless there’s something I’m missing.

Questions I’d love help clarifying:

  1. Is there a working way to access comment data on Frame.io V4 — either via polling (e.g. asset-level?) or webhooks — without an enterprise plan?
  2. Are there any V4-specific API endpoints or docs for comments that are public? I’ve only found the Legacy (v2) API.
  3. If this isn’t currently possible, is there an ETA on when webhooks (or comment access) will be available in V4?

Really grateful for any insight you can provide — just trying to avoid Zapier if I can help it, but will fallback to that route if needed.

Thanks again!

Hi @Fraggell thanks for confirming! The reason why you are getting 404 errors is due to that you are using our Legacy API (/v2) for V4. Due to the restructuring of how V4 fundamentally works, we were forced to create a breaking change in the API so V2 calls to Frame.io V4 will not work.

You will need to follow our updated developer guides to get set up to accomplish what you are trying to do.

Please note, you will need to have your Frame.io account linked to an Adobe ID, otherwise you will get a 401 “Unauthorized” response. You will be able to obtain an auth/refresh token for IMS via the Developer Console, however unless you have a your Adobe ID linked to your Frame.io account it will not know where to go, hence the 401. Please reach out to our support team to have your Frame.io account set up for linking to an Adobe ID.