{"openapi":"3.1.0","info":{"title":"PictureFlow API","version":"2026-11-01","description":"Read PictureFlow Tracker shows and budgets from your own pipeline. Permissions: `tracker:read` (Shows, episodes, shots, tasks, notes, people and activity.); `budgets:read` (Projects, versions, topsheets and VFX shot bids.); `finance:read` (Day rates, vendor costs and contract value, for people who already see Finance.)"},"servers":[{"url":"https://treatment.pictureflow.pro/api/v1"}],"security":[{"bearer":[]}],"paths":{"/me":{"get":{"operationId":"me","tags":["Account"],"summary":"Check a key","description":"Who the key belongs to, its permissions and limits. Any key can call it.","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"key_owner","user":{"id":"cm3user01","name":"Sam Lee","email":"sam@example.com","company":"Northbound Pictures"},"plan":{"state":"subscribed"},"key":{"id":"cm3key01","name":"ShotGrid sync","prefix":"pf_live_Ab3dE9xK","scopes":["tracker:read"],"show_ids":[],"project_ids":[]},"api_version":"2026-11-01","rate_limit_per_minute":600}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shows":{"get":{"operationId":"list-shows","tags":["Tracker"],"summary":"List shows","description":"Tracker shows the key's owner runs or was invited to. Add archived=true to include archived shows.\n\nNeeds the `tracker:read` permission.","parameters":[{"name":"archived","in":"query","required":false,"description":"true to include archived shows.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"show","id":"cm3show0001","name":"Northbound","code":"NB","client":"Harbor Light","status":"active","archived":false,"start_date":"2026-11-01","delivery_date":"2027-03-12","hours_per_day":10,"currency":"USD","your_role":"owner","steps":[{"id":"comp","name":"Compositing","short":"CP","group":"2d","color":"#5e5ce6"}],"source_bid":null,"url":"https://tracker.pictureflow.pro/shows/cm3show0001"}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shows/{showId}":{"get":{"operationId":"get-show","tags":["Tracker"],"summary":"Get a show","description":"One show with its pipeline steps. Day rates and contract value are included only when the key has finance:read and its owner sees Finance.\n\nNeeds the `tracker:read` permission.","parameters":[{"name":"showId","in":"path","required":true,"description":"The show's id, from GET /shows.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"show","id":"cm3show0001","name":"Northbound","code":"NB","…":"…"}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shows/{showId}/episodes":{"get":{"operationId":"list-episodes","tags":["Tracker"],"summary":"List episodes","description":"Needs the `tracker:read` permission.","parameters":[{"name":"showId","in":"path","required":true,"description":"The show's id, from GET /shows.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"episode","id":"cm3ep0001","code":"NB101","name":"Pilot","turnover":"2026-11-03","temp_date":null,"picture_final":"2027-01-15","final_delivery":"2027-02-01","air_date":null,"sort":0}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shows/{showId}/shots":{"get":{"operationId":"list-shots","tags":["Tracker"],"summary":"List shots and assets","description":"Sorted oldest change first, so a sync can page through and keep the last updated_at for next time. Clients see client-facing shots only, without people or hours; vendors see their own shots.\n\nNeeds the `tracker:read` permission.","parameters":[{"name":"showId","in":"path","required":true,"description":"The show's id, from GET /shows.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"One or more status codes, comma separated.","schema":{"type":"string","enum":["wtg","ip","int","crv","fin","dlv","hld","omt"]}},{"name":"kind","in":"query","required":false,"description":"shot or asset.","schema":{"type":"string","enum":["shot","asset"]}},{"name":"episode_id","in":"query","required":false,"description":"Only this episode.","schema":{"type":"string"}},{"name":"code","in":"query","required":false,"description":"One or more shot codes, comma separated.","schema":{"type":"string"}},{"name":"vendor","in":"query","required":false,"description":"Only shots awarded to this vendor.","schema":{"type":"string"}},{"name":"updated_since","in":"query","required":false,"description":"Only items changed at or after this ISO timestamp. Use it for incremental syncs.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1–500. Default 100.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"next_cursor from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"shot","id":"cm3shot0001","show_id":"cm3show0001","kind":"shot","code":"NB101_010","sequence":"NB101_010","episode_id":"cm3ep0001","episode_code":"NB101","description":"Sky replacement through the windshield, add snow","status":"ip","complexity":"medium","frames":96,"tags":["sky"],"due_date":"2026-12-04","delivered_at":null,"thumbnail_url":"https://www.pictureflow.pro/api/v1/shots/cm3shot0001/thumbnail","open_notes":1,"cut_from_bid":false,"sort":1,"assumptions":"Clean plate provided","lead":"Alex Rivera","vendor":null,"bid_hours":62,"logged_hours":18.5,"external_ids":{},"url":"https://tracker.pictureflow.pro/shows/cm3show0001/shots?shot=cm3shot0001","created_at":"2026-11-02T17:04:11.000Z","updated_at":"2026-11-05T09:12:40.000Z"}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shots/{shotId}":{"get":{"operationId":"get-shot","tags":["Tracker"],"summary":"Get a shot","description":"Needs the `tracker:read` permission.","parameters":[{"name":"shotId","in":"path","required":true,"description":"The shot's id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"shot","id":"cm3shot0001","show_id":"cm3show0001","kind":"shot","code":"NB101_010","sequence":"NB101_010","episode_id":"cm3ep0001","episode_code":"NB101","description":"Sky replacement through the windshield, add snow","status":"ip","complexity":"medium","frames":96,"tags":["sky"],"due_date":"2026-12-04","delivered_at":null,"thumbnail_url":"https://www.pictureflow.pro/api/v1/shots/cm3shot0001/thumbnail","open_notes":1,"cut_from_bid":false,"sort":1,"assumptions":"Clean plate provided","lead":"Alex Rivera","vendor":null,"bid_hours":62,"logged_hours":18.5,"external_ids":{},"url":"https://tracker.pictureflow.pro/shows/cm3show0001/shots?shot=cm3shot0001","created_at":"2026-11-02T17:04:11.000Z","updated_at":"2026-11-05T09:12:40.000Z"}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shots/{shotId}/thumbnail":{"get":{"operationId":"shot-thumbnail","tags":["Tracker"],"summary":"Download a shot's thumbnail","description":"Returns the image itself (JPEG, PNG or WebP), or redirects to it.\n\nNeeds the `tracker:read` permission.","parameters":[{"name":"shotId","in":"path","required":true,"description":"The shot's id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"image/*":{}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shows/{showId}/tasks":{"get":{"operationId":"list-tasks","tags":["Tracker"],"summary":"List tasks","description":"One task per shot and pipeline step. step_id matches the show's steps.\n\nNeeds the `tracker:read` permission.","parameters":[{"name":"showId","in":"path","required":true,"description":"The show's id, from GET /shows.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"One or more status codes, comma separated.","schema":{"type":"string","enum":["wtg","ip","int","crv","fin","dlv","hld","omt"]}},{"name":"shot_id","in":"query","required":false,"description":"Only this shot's tasks.","schema":{"type":"string"}},{"name":"step_id","in":"query","required":false,"description":"Only this pipeline step.","schema":{"type":"string"}},{"name":"assignee","in":"query","required":false,"description":"Only tasks assigned to this name.","schema":{"type":"string"}},{"name":"updated_since","in":"query","required":false,"description":"Only items changed at or after this ISO timestamp. Use it for incremental syncs.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1–500. Default 100.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"next_cursor from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"task","id":"cm3task0001","show_id":"cm3show0001","shot_id":"cm3shot0001","shot_code":"NB101_010","step_id":"comp","step_name":"Compositing","status":"ip","start_date":"2026-11-10","due_date":"2026-11-21","assignee":"Alex Rivera","bid_hours":30,"logged_hours":12,"external_ids":{},"updated_at":"2026-11-05T09:12:40.000Z"}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tasks/{taskId}":{"get":{"operationId":"get-task","tags":["Tracker"],"summary":"Get a task","description":"Needs the `tracker:read` permission.","parameters":[{"name":"taskId","in":"path","required":true,"description":"The task's id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"task","id":"cm3task0001","…":"…"}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shows/{showId}/notes":{"get":{"operationId":"list-notes","tags":["Tracker"],"summary":"List notes","description":"Oldest first. Clients only see client notes.\n\nNeeds the `tracker:read` permission.","parameters":[{"name":"showId","in":"path","required":true,"description":"The show's id, from GET /shows.","schema":{"type":"string"}},{"name":"shot_id","in":"query","required":false,"description":"Only this shot's notes.","schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"description":"client or internal.","schema":{"type":"string","enum":["client","internal"]}},{"name":"status","in":"query","required":false,"description":"open or addressed.","schema":{"type":"string","enum":["open","addressed"]}},{"name":"created_since","in":"query","required":false,"description":"Only items created at or after this ISO timestamp.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1–500. Default 100.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"next_cursor from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"note","id":"cm3note0001","show_id":"cm3show0001","shot_id":"cm3shot0001","shot_code":"NB101_010","author_name":"Jordan Park","kind":"client","body":"Warm the sky slightly on the last 20 frames.","status":"open","created_at":"2026-11-06T18:30:00.000Z","resolved_at":null}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shows/{showId}/members":{"get":{"operationId":"list-members","tags":["Tracker"],"summary":"List the team","description":"People on the show and their roles. Not available to client or vendor keys. Day rates need finance:read.\n\nNeeds the `tracker:read` permission.","parameters":[{"name":"showId","in":"path","required":true,"description":"The show's id, from GET /shows.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"member","id":"cm3mem0001","name":"Alex Rivera","email":"alex@example.com","role":"artist","access":"edit","step_id":"comp","signed_in":true}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/shows/{showId}/activity":{"get":{"operationId":"list-activity","tags":["Tracker"],"summary":"List activity","description":"What changed on the show, oldest first. Not available to client or vendor keys.\n\nNeeds the `tracker:read` permission.","parameters":[{"name":"showId","in":"path","required":true,"description":"The show's id, from GET /shows.","schema":{"type":"string"}},{"name":"shot_id","in":"query","required":false,"description":"Only this shot's history.","schema":{"type":"string"}},{"name":"created_since","in":"query","required":false,"description":"Only items created at or after this ISO timestamp.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1–500. Default 100.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"next_cursor from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"activity","id":"cm3act0001","show_id":"cm3show0001","shot_id":"cm3shot0001","user_name":"Sam Lee","text":"NB101_010 status → In progress","created_at":"2026-11-05T09:12:40.000Z"}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects":{"get":{"operationId":"list-projects","tags":["Budgets and bids"],"summary":"List projects","description":"Budgets and bids from every PictureFlow app that the key's owner owns or was invited to.\n\nNeeds the `budgets:read` permission.","parameters":[{"name":"archived","in":"query","required":false,"description":"true to include archived projects.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"project","id":"cm3proj01","name":"Northbound VFX bid","client":"Harbor Light","kind":"vfx","type":"shot_bid","app":"vfx","currency":"USD","archived":false,"your_role":"owner","section_limited":false,"url":"https://vfx.pictureflow.pro/app/p/cm3proj01"}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}":{"get":{"operationId":"get-project","tags":["Budgets and bids"],"summary":"Get a project","description":"The project with its versions and their totals.\n\nNeeds the `budgets:read` permission.","parameters":[{"name":"projectId","in":"path","required":true,"description":"The project's id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"project","id":"cm3proj01","…":"…","versions":[{"object":"version","id":"cm3ver01","name":"Bid v2","locked":false,"currency":"USD","total":412500}]}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/versions":{"get":{"operationId":"list-versions","tags":["Budgets and bids"],"summary":"List versions","description":"Needs the `budgets:read` permission.","parameters":[{"name":"projectId","in":"path","required":true,"description":"The project's id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"list","data":[{"object":"version","id":"cm3ver01","name":"Bid v2","locked":false,"currency":"USD","total":412500}],"has_more":false,"next_cursor":null}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/versions/{versionId}/topsheet":{"get":{"operationId":"topsheet","tags":["Budgets and bids"],"summary":"Get a topsheet","description":"Section and account totals, fringes, fees, discounts and actuals, calculated the same way as the app. Includes the locked-in bid beside each total when there is one.\n\nNeeds the `budgets:read` permission.","parameters":[{"name":"versionId","in":"path","required":true,"description":"The version's id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"topsheet","version_id":"cm3ver01","version_name":"Bid v2","currency":"USD","sections":[{"id":"s1","code":"A","name":"Pre-production","kind":"btl","subtotal":18200,"fringe":3100,"total":21300,"actual":0,"bid":21300,"accounts":[{"id":"a1","code":"1","name":"Producer","total":6500,"actual":0,"bid":6500}]}],"sections_total":371000,"fees":[{"name":"Production fee","percent":10,"base":371000,"amount":37100}],"grand_total":412500,"actual_total":0}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/versions/{versionId}/shots":{"get":{"operationId":"shot-bid","tags":["Budgets and bids"],"summary":"Get a VFX shot bid","description":"Every shot and asset in a VFX bid with days per step and cost. Use it to create shots and tasks in your own tracker.\n\nNeeds the `budgets:read` permission.","parameters":[{"name":"versionId","in":"path","required":true,"description":"The version's id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"object":"shot_bid","version_id":"cm3ver01","currency":"USD","group_by":"episode","hours_per_day":10,"steps":[{"id":"comp","name":"Compositing","day_rate":650,"days":42,"cost":27300}],"shots":[{"object":"bid_shot","id":"b1","code":"NB101_010","description":"Sky replacement","status":"awarded","complexity":"medium","frames":96,"days":{"comp":3,"roto":2},"total_days":5,"cost":3050}],"assets":[],"counts":{"bid":0,"awarded":10,"omit":0},"total":61200}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"An API key from Settings › API keys, starting pf_live_."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication","plan_required","permission","not_found","rate_limited","server_error"]},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"request_id":{"type":"string"}}}}}}}}