1. post curl --location --request POST 'http://127.0.0.1:8000/api/v1/hudl/exchange/open' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' Response :- { "status": "ok", "action": "open_exchange", "url": "https://www.hudl.com/teams/65072/exchanges", "message": "Opened Exchange → Direct" } 2. get curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/data' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' Response :- { "status": "ok", "url": "https://www.hudl.com/teams/65072/exchanges", "suggested_teams": [ { "id": "284898", "school_name": "Power High School", "team_name": "Girls Varsity Basketball - Power, MT" }, ...], "suggested_teams_count": 15, "active_exchanges": [ { "id": "0", "time": "a day ago", "name": "West Catholic High School", "process": "You sent them a request for video" }, ...], "active_exchanges_count": 67 } 3. post curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/search' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' \ --header 'Content-Type: application/json' \ --data '{"query": "edi"}' Response :- { "status": "ok", "action": "search", "query": "edi", "header_text": "We found 15 teams! Click on one to start an exchange.", "url": "https://www.hudl.com/teams/65072/exchanges", "message": "Search done. Call GET /exchange/search/teams for team list." } get curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/search/teams' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' Response :- { "status": "ok", "action": "search_teams", "query": "edi", "url": "https://www.hudl.com/teams/65072/exchanges", "suggested_teams": [ { "id": "216482", "school_name": "Edison Academy High", "team_name": "Women's Varsity Basketball - Detroit, MI", "title": "Women's Varsity Basketball - Detroit, MI", "photo_url": "https://static.hudl.com/users/prod/7086828_b2e19a3fca894134b8e795e9de5c47a1.jpg" }, ...], "suggested_teams_count": 15 } 4. post curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/types' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' \ --header 'Content-Type: application/json' \ --data '{ "team_id": "216482", "team_source": "search", // "team_source": "suggested", "exchange_type": "two-way" // "exchange_type": "one-way" // "exchange_type": "request" }' Response :- { "status": "ok", "action": "exchange_types", "team_id": "216482", "team_source": "search", "exchange_type": "two-way", "url": "https://www.hudl.com/teams/65072/exchanges", "message": "Selected team 216482, chose two-way, clicked Next." } 5. get curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/videos' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' Response : { "status": "ok", "url": "https://www.hudl.com/teams/65072/exchanges", "videos": [ { "index": 2, "title": "Untitled Video - Mon May 18 2026 - GameFootage" }, { "index": 3, "title": "Untitled Video - Mon May 18 2026 - GameFootage" }, ...] } post curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/videos/select' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' \ --header 'Content-Type: application/json' \ --data '{"video_indices": [13, 23]}' { "status": "ok", "action": "video_select", "selected_indices": [ 13, 23 ], "url": "https://www.hudl.com/teams/65072/exchanges", "next_button_used": "xpath=//button[@id='eventNextButton']", "message": "Selected 2 videos and clicked Next." } 6. get <<-- rerun it for latest response curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/stats' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' \ --header 'Content-Type: application/json' \ --data '' post curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/stats' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' \ --header 'Content-Type: application/json' \ --data '{"include_stats": true}' Response :- { "status": "ok", "action": "stats", "include_stats": true, "include_team_stats": true, "include_player_stats": true, "url": "https://www.hudl.com/teams/65072/exchanges", "next_button_used": "xpath=//button[@id='gameStatsNextButton']", "message": "Stats selection Included, clicked Next dynamically." } 7. post curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/notes' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' \ --header 'Content-Type: application/json' \ --data '{"message": "Here are the videos!"}' { "status": "ok", "action": "notes", "message_sent": "Here are the videos!", "url": "https://www.hudl.com/teams/65072/exchanges", "next_button_used": "xpath=//button[@id='messageNextButton']", "message": "Notes step completed." } 8. get curl --location 'http://127.0.0.1:8000/api/v1/hudl/exchange/confirm' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' \ --header 'Content-Type: application/json' Response :- { "status": "ok", "action": "confirm_details", "url": "https://www.hudl.com/teams/65072/exchanges", "exchange_name": "Two-Way Exchange with", "school_name": "Power High School", "school_image": "https://static.hudl.com/users/prod/25222988_3034aad780ce40938ff4a72f79948817.jpg", "video_names": [ "West Catholic High School vs Tecumseh High School Womens Varsity Basketball - Thu Mar 19 2026 - OpponentScout", "Game #16 vs. Portland - Thu Feb 19 2026 - OpponentScout" ], "stats": ["Team stats for all teams. Player stats"], "message": "Here are the videos!" } post curl --location --request POST 'http://127.0.0.1:8000/api/v1/hudl/exchange/confirm' \ --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJlbWFpbCI6InVzZXJAeW9wbWFpbC5jb20iLCJleHAiOjE3NzkyNzExMjZ9.AYjW09hwFbWq-aA36fxbD1k43iX6Qv7wcR5E1kgEEvk' \ --header 'Content-Type: application/json' Response :- { "status": "ok", "action": "exchange_submitted", "url": "https://www.hudl.com/teams/65072/exchanges", "message": "Exchange has been successfully submitted." }