Not in the top 1,000 by GitHub stars

heygen-com/heygen-cli

Create AI videos from the terminal. Official CLI for the HeyGen video generation API.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

27f93c98ee5d → 27f93c98ee5d

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 27f93c98ee5d

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 27f93c98ee5d798eadca0d7a5f1e6845431c315c

git clone --filter=blob:none --no-checkout https://github.com/heygen-com/heygen-cli.git .hotskills/heygen-com-heygen-cli && git -C .hotskills/heygen-com-heygen-cli checkout --detach 27f93c98ee5d798eadca0d7a5f1e6845431c315c # Copy each selected skill directory from .hotskills/heygen-com-heygen-cli into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/heygen-com/heygen-cli.git .hotskills/heygen-com-heygen-cli && git -C .hotskills/heygen-com-heygen-cli checkout --detach 27f93c98ee5d798eadca0d7a5f1e6845431c315c # Copy each selected skill directory from .hotskills/heygen-com-heygen-cli into .agents/skills/<skill-name>/
171GitHub stars
4stars in 7 days
1skill in this repository
5commits in 30 days

Heat

4.2
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026171

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

heygen-cli

When your agent uses it

Create AI videos, manage avatars, translate videos, and download results via the HeyGen API. Use when an agent needs to generate videos from text prompts, create avatar-based videos, translate existing videos, or automate video production workflows.

What it loads into context

Frontmatter

55 tokens

Always available to the agent

SKILL.md

2,020 tokens

When the skill is activated

Reference documents

24,067 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Key Commands
  2. Async Workflow
  3. Discovering API Fields
  4. Output Contract
  5. Notes

Scripts executed separately

  • .github/scripts/check_pr_template.py
  • .github/scripts/cleanup-failed-release.sh
  • .github/scripts/find-run-draft.sh
  • .github/scripts/install-goreleaser.sh
  • Makefile
  • cmd/heygen/aliases.go
  • cmd/heygen/aliases_brandkit_test.go
  • cmd/heygen/aliases_test.go
  • cmd/heygen/auth.go
  • cmd/heygen/auth_login.go
  • cmd/heygen/auth_login_device_test.go
  • cmd/heygen/auth_login_dispatch_test.go
  • cmd/heygen/auth_login_friendly_test.go
  • cmd/heygen/auth_login_oauth_test.go
  • cmd/heygen/auth_login_picker.go
  • cmd/heygen/auth_login_picker_test.go
  • cmd/heygen/auth_logout.go
  • cmd/heygen/auth_logout_test.go
  • cmd/heygen/auth_status.go
  • cmd/heygen/auth_status_friendly_test.go
  • cmd/heygen/auth_status_oauth_test.go
  • cmd/heygen/auth_status_test.go
  • cmd/heygen/auth_test.go
  • cmd/heygen/builder.go
  • cmd/heygen/builder_test.go
  • cmd/heygen/columns.go
  • cmd/heygen/columns_test.go
  • cmd/heygen/config_cmd.go
  • cmd/heygen/config_cmd_test.go
  • cmd/heygen/confirm.go
  • cmd/heygen/confirm_test.go
  • cmd/heygen/context.go
  • cmd/heygen/context_test.go
  • cmd/heygen/deprecated_flags_test.go
  • cmd/heygen/feedback.go
  • cmd/heygen/feedback_test.go
  • cmd/heygen/formatter_select.go
  • cmd/heygen/generated_example_flags_test.go
  • cmd/heygen/generated_examples_test.go
  • cmd/heygen/generated_root_test.go
  • cmd/heygen/go_version_pin_test.go
  • cmd/heygen/headers_test.go
  • cmd/heygen/help_flatten.go
  • cmd/heygen/hidden_commands_test.go
  • cmd/heygen/idempotency_key_test.go
  • cmd/heygen/instant_video_test.go
  • cmd/heygen/main.go
  • cmd/heygen/main_test.go
  • cmd/heygen/poll_configs.go
  • cmd/heygen/poll_configs_test.go
  • cmd/heygen/root.go
  • cmd/heygen/root_test.go
  • cmd/heygen/testutil_test.go
  • cmd/heygen/timeouts.go
  • cmd/heygen/timeouts_test.go
  • cmd/heygen/update.go
  • cmd/heygen/update_notice.go
  • cmd/heygen/update_notice_test.go
  • cmd/heygen/update_notice_unix.go
  • cmd/heygen/update_notice_windows.go
  • cmd/heygen/update_test.go
  • cmd/heygen/video_download.go
  • cmd/heygen/video_download_test.go
  • cmd/heygen/video_list_test.go
  • codegen/examples.go
  • codegen/examples_test.go
  • codegen/generate.go
  • codegen/generate_test.go
  • codegen/grouper.go
  • codegen/grouper_test.go
  • codegen/main.go
  • codegen/schema.go
  • codegen/schema_test.go
  • codegen/surface_allowlist_test.go
  • codegen/testdata/golden/registry.go
  • codegen/testdata/golden/upload.go
  • codegen/testdata/golden/widget.go
  • gen/ai-clipping.go
  • gen/asset.go
  • gen/audio.go
  • gen/avatar.go
  • gen/background-removal.go
  • gen/brand.go
  • gen/filler-word-removal.go
  • gen/folder.go
  • gen/lipsync.go
  • gen/model.go
  • gen/registry.go
  • gen/template.go
  • gen/user.go
  • gen/video-agent.go
  • gen/video-translate.go
  • gen/video.go
  • gen/voice.go
  • gen/webhook.go
  • internal/analytics/analytics.go
  • internal/analytics/analytics_test.go
  • internal/auth/chain_resolver.go
  • internal/auth/chain_resolver_test.go
  • internal/auth/chain_typed_test.go
  • internal/auth/constants.go
  • internal/auth/credential.go
  • internal/auth/credentials_file.go
  • internal/auth/env_resolver.go
  • internal/auth/env_resolver_test.go
  • internal/auth/file_resolver.go
  • internal/auth/file_resolver_test.go
  • internal/auth/file_store.go
  • internal/auth/file_store_test.go
  • internal/auth/not_configured.go
  • internal/auth/oauth/browser.go
  • internal/auth/oauth/browser_test.go
  • internal/auth/oauth/device.go
  • internal/auth/oauth/device_test.go
  • internal/auth/oauth/loopback.go
  • internal/auth/oauth/loopback_test.go
  • internal/auth/oauth/oauth.go
  • internal/auth/oauth/oauth_test.go
  • internal/auth/oauth/pkce.go
  • internal/auth/oauth/pkce_test.go
  • internal/auth/oauth/tokens.go
  • internal/auth/oauth/tokens_test.go
  • internal/auth/oauth_store.go
  • internal/auth/resolver.go
  • internal/auth/store.go
  • internal/auth/user_store.go
  • internal/auth/user_store_test.go
  • internal/client/client.go
  • internal/client/client_test.go
  • internal/client/executor.go
  • internal/client/executor_test.go
  • internal/client/oauth_transport_test.go
  • internal/client/retry.go
  • internal/client/retry_test.go
  • internal/command/hidden.go
  • internal/command/spec.go
  • internal/command/spec_test.go
  • internal/config/config.go
  • internal/config/env_provider.go
  • internal/config/env_provider_test.go
  • internal/config/file_provider.go
  • internal/config/file_provider_test.go
  • internal/config/layered_provider.go
  • internal/config/layered_provider_test.go
  • internal/errors/api_error.go
  • internal/errors/codes.go
  • internal/errors/codes_test.go
  • internal/errors/errors.go
  • internal/errors/errors_test.go
  • internal/origin/origin.go
  • internal/origin/origin_test.go
  • internal/output/formatter.go
  • internal/output/human_formatter.go
  • internal/output/human_formatter_test.go
  • internal/output/json_formatter.go
  • internal/output/json_formatter_test.go
  • internal/output/spinner.go
  • internal/output/spinner_test.go
  • internal/paths/paths.go
  • scripts/install.sh
  • scripts/release-surface.sh

Files

  • .agents/skills/README.mddoc1,533 bytes
  • .agents/skills/changelog-cli/SKILL.mddoc4,089 bytes
  • .agents/skills/e2e-cli-test/SKILL.mddoc9,761 bytes
  • .agents/skills/release-cli/SKILL.mddoc7,425 bytes
  • .claude/skills/changelog-cli/SKILL.mddoc4,089 bytes
  • .claude/skills/e2e-cli-test/SKILL.mddoc9,761 bytes
  • .claude/skills/release-cli/SKILL.mddoc7,425 bytes
  • .gitattributesasset19 bytes
  • .github/GIT_CONVENTIONS.mddoc1,683 bytes
  • .github/ISSUE_TEMPLATE/bug.ymlasset1,015 bytes
  • .github/ISSUE_TEMPLATE/config.ymlasset28 bytes
  • .github/ISSUE_TEMPLATE/feature.ymlasset637 bytes
  • .github/PULL_REQUEST_TEMPLATEasset173 bytes
  • .github/dependabot.ymlasset324 bytes
  • .github/scripts/check_pr_template.pyruns1,004 bytes
  • .github/scripts/cleanup-failed-release.shruns3,397 bytes
  • .github/scripts/find-run-draft.shruns736 bytes
  • .github/scripts/install-goreleaser.shruns792 bytes
  • .github/workflows/ci.ymlasset8,851 bytes
  • .github/workflows/dev-release.ymlasset6,594 bytes
  • .github/workflows/release-stable.ymlasset10,287 bytes
  • .gitignoreasset85 bytes
  • .gitleaks.tomlasset194 bytes
  • .golangci.ymlasset908 bytes
  • .goreleaser.yamlasset999 bytes
  • AGENTS.mddoc8,055 bytes
  • CODE_OF_CONDUCT.mddoc5,520 bytes
  • CONTRIBUTING.mddoc8,230 bytes
  • LICENSEasset10,763 bytes
  • Makefileruns601 bytes
  • NOTICEasset88 bytes
  • README.mddoc12,149 bytes
  • RELEASE.mddoc15,986 bytes
  • SECURITY.mddoc654 bytes
  • SKILL.mdcore8,302 bytes
  • SKILL.mdcore8,302 bytes
  • SKILL.mdcore8,302 bytes
  • SKILL.mdcore8,302 bytes
  • SKILL.mdcore8,302 bytes
  • SKILL.mdcore8,302 bytes
  • cmd/heygen/aliases.goruns3,960 bytes
  • cmd/heygen/aliases_brandkit_test.goruns1,166 bytes
  • cmd/heygen/aliases_test.goruns3,309 bytes
  • cmd/heygen/auth.goruns2,023 bytes
  • cmd/heygen/auth_login.goruns41,706 bytes
  • cmd/heygen/auth_login_device_test.goruns8,277 bytes
  • cmd/heygen/auth_login_dispatch_test.goruns15,474 bytes
  • cmd/heygen/auth_login_friendly_test.goruns7,898 bytes
  • cmd/heygen/auth_login_oauth_test.goruns48,074 bytes
  • cmd/heygen/auth_login_picker.goruns6,069 bytes
  • cmd/heygen/auth_login_picker_test.goruns5,129 bytes
  • cmd/heygen/auth_logout.goruns4,076 bytes
  • cmd/heygen/auth_logout_test.goruns5,687 bytes
  • cmd/heygen/auth_status.goruns8,829 bytes
  • cmd/heygen/auth_status_friendly_test.goruns6,553 bytes
  • cmd/heygen/auth_status_oauth_test.goruns8,817 bytes
  • cmd/heygen/auth_status_test.goruns14,435 bytes
  • cmd/heygen/auth_test.goruns4,883 bytes
  • cmd/heygen/builder.goruns17,194 bytes
  • cmd/heygen/builder_test.goruns45,199 bytes
  • cmd/heygen/columns.goruns4,697 bytes
  • cmd/heygen/columns_test.goruns2,480 bytes
  • cmd/heygen/config_cmd.goruns4,157 bytes
  • cmd/heygen/config_cmd_test.goruns6,501 bytes
  • cmd/heygen/confirm.goruns861 bytes
  • cmd/heygen/confirm_test.goruns1,064 bytes
  • cmd/heygen/context.goruns6,081 bytes
  • cmd/heygen/context_test.goruns5,004 bytes
  • cmd/heygen/deprecated_flags_test.goruns7,432 bytes
  • cmd/heygen/feedback.goruns2,900 bytes
  • cmd/heygen/feedback_test.goruns3,541 bytes
  • cmd/heygen/formatter_select.goruns1,179 bytes
  • cmd/heygen/generated_example_flags_test.goruns9,092 bytes
  • cmd/heygen/generated_examples_test.goruns488 bytes
  • cmd/heygen/generated_root_test.goruns13,575 bytes
  • cmd/heygen/go_version_pin_test.goruns4,911 bytes
  • cmd/heygen/headers_test.goruns2,297 bytes
  • cmd/heygen/help_flatten.goruns4,911 bytes
  • cmd/heygen/hidden_commands_test.goruns2,579 bytes
  • cmd/heygen/idempotency_key_test.goruns2,377 bytes
  • cmd/heygen/instant_video_test.goruns2,811 bytes
  • cmd/heygen/main.goruns4,823 bytes
  • cmd/heygen/main_test.goruns3,350 bytes
  • cmd/heygen/poll_configs.goruns1,753 bytes
  • cmd/heygen/poll_configs_test.goruns470 bytes
  • cmd/heygen/root.goruns9,242 bytes
  • cmd/heygen/root_test.goruns1,286 bytes
  • cmd/heygen/testutil_test.goruns3,688 bytes
  • cmd/heygen/timeouts.goruns2,148 bytes
  • cmd/heygen/timeouts_test.goruns1,567 bytes
  • cmd/heygen/update.goruns11,327 bytes
  • cmd/heygen/update_notice.goruns11,520 bytes
  • cmd/heygen/update_notice_test.goruns20,836 bytes
  • cmd/heygen/update_notice_unix.goruns1,303 bytes
  • cmd/heygen/update_notice_windows.goruns1,008 bytes
  • cmd/heygen/update_test.goruns20,862 bytes
  • cmd/heygen/video_download.goruns8,974 bytes
  • cmd/heygen/video_download_test.goruns21,352 bytes
  • cmd/heygen/video_list_test.goruns7,124 bytes
  • codegen/examples.goruns2,601 bytes
  • codegen/examples/ai-clipping.yamlasset509 bytes
  • codegen/examples/asset.yamlasset2,840 bytes
  • codegen/examples/audio.yamlasset453 bytes
  • codegen/examples/avatar.yamlasset1,835 bytes
  • codegen/examples/background-removal.yamlasset1,105 bytes
  • codegen/examples/batch.yamlasset855 bytes
  • codegen/examples/brand.yamlasset3,507 bytes
  • codegen/examples/filler-word-removal.yamlasset1,296 bytes
  • codegen/examples/folder.yamlasset222 bytes
  • codegen/examples/lipsync.yamlasset1,537 bytes
  • codegen/examples/model.yamlasset4,101 bytes
  • codegen/examples/template.yamlasset1,964 bytes
  • codegen/examples/user.yamlasset92 bytes
  • codegen/examples/video-agent.yamlasset1,387 bytes
  • codegen/examples/video-translate.yamlasset3,219 bytes
  • codegen/examples/video.yamlasset2,391 bytes
  • codegen/examples/voice.yamlasset1,422 bytes
  • codegen/examples/webhook.yamlasset1,116 bytes
  • codegen/examples_test.goruns1,672 bytes
  • codegen/generate.goruns3,753 bytes
  • codegen/generate_test.goruns2,831 bytes
  • codegen/grouper.goruns33,929 bytes
  • codegen/grouper_test.goruns33,138 bytes
  • codegen/main.goruns2,506 bytes
  • codegen/schema.goruns4,816 bytes
  • codegen/schema_test.goruns6,128 bytes
  • codegen/surface_allowlist_test.goruns12,857 bytes
  • codegen/templates/command.go.tmplasset1,560 bytes
  • codegen/templates/registry.go.tmplasset723 bytes
  • codegen/testdata/golden/registry.goruns587 bytes
  • codegen/testdata/golden/upload.goruns1,020 bytes
  • codegen/testdata/golden/widget.goruns6,708 bytes
  • codegen/testdata/mini_spec.jsonasset8,508 bytes
  • codegen/testdata/test_examples.yamlasset999 bytes
  • codegen/testdata/test_spec.yamlasset9,336 bytes
  • docs/demo.gifasset88,401 bytes
  • docs/demo.tapeasset934 bytes
  • gen/ai-clipping.goruns26,836 bytes
  • gen/asset.goruns41,261 bytes
  • gen/audio.goruns5,174 bytes
  • gen/avatar.goruns72,050 bytes
  • gen/background-removal.goruns14,795 bytes
  • gen/brand.goruns78,621 bytes
  • gen/filler-word-removal.goruns10,740 bytes
  • gen/folder.goruns9,088 bytes
  • gen/lipsync.goruns40,579 bytes
  • gen/model.goruns92,143 bytes
  • gen/registry.goruns4,400 bytes
  • gen/template.goruns328,384 bytes
  • gen/user.goruns5,382 bytes
  • gen/video-agent.goruns41,000 bytes
  • gen/video-translate.goruns87,620 bytes
  • gen/video.goruns335,599 bytes
  • gen/voice.goruns29,999 bytes
  • gen/webhook.goruns24,164 bytes
  • go.modasset2,784 bytes
  • go.sumasset15,178 bytes
  • internal/analytics/analytics.goruns12,592 bytes
  • internal/analytics/analytics_test.goruns22,786 bytes
  • internal/auth/chain_resolver.goruns3,146 bytes
  • internal/auth/chain_resolver_test.goruns4,358 bytes
  • internal/auth/chain_typed_test.goruns5,775 bytes
  • internal/auth/constants.goruns822 bytes
  • internal/auth/credential.goruns2,295 bytes
  • internal/auth/credentials_file.goruns4,172 bytes
  • internal/auth/env_resolver.goruns984 bytes
  • internal/auth/env_resolver_test.goruns805 bytes
  • internal/auth/file_resolver.goruns12,297 bytes
  • internal/auth/file_resolver_test.goruns14,335 bytes
  • internal/auth/file_store.goruns1,275 bytes
  • internal/auth/file_store_test.goruns7,730 bytes
  • internal/auth/not_configured.goruns196 bytes
  • internal/auth/oauth/browser.goruns3,757 bytes
  • internal/auth/oauth/browser_test.goruns5,418 bytes
  • internal/auth/oauth/device.goruns7,295 bytes
  • internal/auth/oauth/device_test.goruns8,397 bytes
  • internal/auth/oauth/loopback.goruns12,355 bytes
  • internal/auth/oauth/loopback_test.goruns10,977 bytes
  • internal/auth/oauth/oauth.goruns20,439 bytes
  • internal/auth/oauth/oauth_test.goruns21,670 bytes
  • internal/auth/oauth/pkce.goruns1,463 bytes
  • internal/auth/oauth/pkce_test.goruns1,949 bytes
  • internal/auth/oauth/tokens.goruns2,066 bytes
  • internal/auth/oauth/tokens_test.goruns1,961 bytes
  • internal/auth/oauth_store.goruns6,972 bytes
  • internal/auth/resolver.goruns1,101 bytes
  • internal/auth/store.goruns143 bytes
  • internal/auth/user_store.goruns4,414 bytes
  • internal/auth/user_store_test.goruns9,205 bytes
  • internal/client/client.goruns20,552 bytes
  • internal/client/client_test.goruns8,759 bytes
  • internal/client/executor.goruns20,794 bytes
  • internal/client/executor_test.goruns38,860 bytes
  • internal/client/oauth_transport_test.goruns32,310 bytes
  • internal/client/retry.goruns5,536 bytes
  • internal/client/retry_test.goruns12,099 bytes
  • internal/command/hidden.goruns1,375 bytes
  • internal/command/spec.goruns13,652 bytes
  • internal/command/spec_test.goruns18,941 bytes
  • internal/config/config.goruns953 bytes
  • internal/config/env_provider.goruns1,404 bytes
  • internal/config/env_provider_test.goruns1,588 bytes
  • internal/config/file_provider.goruns1,741 bytes
  • internal/config/file_provider_test.goruns4,269 bytes
  • internal/config/layered_provider.goruns1,668 bytes
  • internal/config/layered_provider_test.goruns3,280 bytes
  • internal/errors/api_error.goruns334 bytes
  • internal/errors/codes.goruns2,639 bytes
  • internal/errors/codes_test.goruns8,078 bytes
  • internal/errors/errors.goruns8,354 bytes
  • internal/errors/errors_test.goruns13,080 bytes
  • internal/origin/origin.goruns8,204 bytes
  • internal/origin/origin_test.goruns6,646 bytes
  • internal/output/formatter.goruns1,612 bytes
  • internal/output/human_formatter.goruns19,334 bytes
  • internal/output/human_formatter_test.goruns20,430 bytes
  • internal/output/json_formatter.goruns2,799 bytes
  • internal/output/json_formatter_test.goruns6,672 bytes
  • internal/output/spinner.goruns2,831 bytes
  • internal/output/spinner_test.goruns1,183 bytes
  • internal/paths/paths.goruns400 bytes
  • scripts/install.shruns5,235 bytes
  • scripts/release-surface.shruns10,476 bytes
Read SKILL.md

# HeyGen CLI

Official CLI for the HeyGen video generation API. 30+ commands auto-generated from the OpenAPI spec. All output is JSON by default.

- **API Docs**: https://developers.heygen.com
- **Install**: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash`
- **Auth**: Requires `HEYGEN_API_KEY` environment variable. The key must be provisioned by a user from https://app.heygen.com/settings/api

For attended human setup in a remote/headless terminal, `heygen auth login
--device` can provision the shared `~/.heygen/credentials` OAuth session.
Agents and CI must continue using `HEYGEN_API_KEY`; device login deliberately
refuses unattended environments.

## Key Commands
View the complete source on GitHub

Skills included

  • heygen-cli

Repository facts

License
Apache-2.0
Created
Mar 30, 2026
Last pushed
Nov 7, 2026
Forks
29
Open issues
2
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 126 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • gen/ai-clipping.go:12 Analysis incomplete: physical or joined line exceeds character limit
  • gen/ai-clipping.go:10 Analysis incomplete: physical or joined line exceeds character limit
  • gen/ai-clipping.go:11 Analysis incomplete: physical or joined line exceeds character limit
  • gen/ai-clipping.go:106 Analysis incomplete: physical or joined line exceeds character limit
  • gen/ai-clipping.go:104 Analysis incomplete: physical or joined line exceeds character limit
  • gen/ai-clipping.go:105 Analysis incomplete: physical or joined line exceeds character limit
  • gen/ai-clipping.go:123 Analysis incomplete: physical or joined line exceeds character limit
  • gen/ai-clipping.go:121 Analysis incomplete: physical or joined line exceeds character limit
  • gen/ai-clipping.go:122 Analysis incomplete: physical or joined line exceeds character limit
  • gen/asset.go:187 Analysis incomplete: physical or joined line exceeds character limit
  • gen/asset.go:188 Analysis incomplete: physical or joined line exceeds character limit
  • gen/asset.go:403 Analysis incomplete: physical or joined line exceeds character limit
  • gen/asset.go:401 Analysis incomplete: physical or joined line exceeds character limit
  • gen/asset.go:402 Analysis incomplete: physical or joined line exceeds character limit
  • gen/avatar.go:11 Analysis incomplete: physical or joined line exceeds character limit
Show all 969 signals by file

.agents/skills/README.md

  • Network accessline 3
    Skills for working on this repository, in the open [Agent Skills](https://agentskills.io)

.agents/skills/e2e-cli-test/SKILL.md

  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Access to secretsline 170
    [Credential-related source omitted]
  • Dangerous shell operationline 212
    rm -f "$DOWNLOAD_PATH"

.agents/skills/release-cli/SKILL.md

  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 129
    <file>`; stop point 5 unless its hash still matches) and read it back, and verify the installer into a scratch directory rather than over the user's own `heygen`. `install.sh` reads `INSTALL_DIR`, so it goes on `bash`, not `curl`: `d=$(mkte
  • Network accessline 130
    the installer into a scratch directory rather than over the user's own `heygen`. `install.sh` reads `INSTALL_DIR`, so it goes on `bash`, not `curl`: `d=$(mktemp -d); curl -fsSL https://static.heygen.ai/cli/install.sh | INSTALL_DIR="$d" bash
  • Network accessline 131
    `install.sh` reads `INSTALL_DIR`, so it goes on `bash`, not `curl`: `d=$(mktemp -d); curl -fsSL https://static.heygen.ai/cli/install.sh | INSTALL_DIR="$d" bash`,

.claude/skills/e2e-cli-test/SKILL.md

  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Access to secretsline 170
    [Credential-related source omitted]
  • Dangerous shell operationline 212
    rm -f "$DOWNLOAD_PATH"

.claude/skills/release-cli/SKILL.md

  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 129
    <file>`; stop point 5 unless its hash still matches) and read it back, and verify the installer into a scratch directory rather than over the user's own `heygen`. `install.sh` reads `INSTALL_DIR`, so it goes on `bash`, not `curl`: `d=$(mkte
  • Network accessline 130
    the installer into a scratch directory rather than over the user's own `heygen`. `install.sh` reads `INSTALL_DIR`, so it goes on `bash`, not `curl`: `d=$(mktemp -d); curl -fsSL https://static.heygen.ai/cli/install.sh | INSTALL_DIR="$d" bash
  • Network accessline 131
    `install.sh` reads `INSTALL_DIR`, so it goes on `bash`, not `curl`: `d=$(mktemp -d); curl -fsSL https://static.heygen.ai/cli/install.sh | INSTALL_DIR="$d" bash`,

.github/scripts/check_pr_template.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 17
    [Credential-related source omitted]
  • Network accessline 20
    url = f"https://api.github.com/repos/{repo}/pulls/{pr_number}"
  • Network accessline 27
    with urllib.request.urlopen(urllib.request.Request(url, headers=headers)) as response:

.github/scripts/cleanup-failed-release.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

.github/scripts/find-run-draft.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

.github/scripts/install-goreleaser.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 12
    cd "$(mktemp -d)" curl -sSfL "https://github.com/goreleaser/goreleaser/releases/download/${GORELEASER_VERSION}/goreleaser_Linux_x86_64.tar.gz" -o goreleaser.tar.gz
  • Network accessline 13
    curl -sSfL "https://github.com/goreleaser/goreleaser/releases/download/${GORELEASER_VERSION}/goreleaser_Linux_x86_64.tar.gz" -o goreleaser.tar.gz
  • Dangerous shell operationline 16
    sudo mv goreleaser /usr/local/bin/

.github/workflows/ci.yml

  • Network accessline 77
    GITLEAKS_SHA256="a65b5253807a68ac0cafa4414031fd740aeb55f54fb7e55f386acb52e6a840eb"           cd /tmp           curl -sSfL "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.ta
  • Network accessline 78
    cd /tmp           curl -sSfL "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" -o gitleaks.tar.gz           echo "${GITLEAKS_SHA256}  gitleaks.tar.gz" | sha256sum -c 
  • Network accessline 79
    curl -sSfL "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" -o gitleaks.tar.gz
  • Dangerous shell operationline 82
    sudo mv gitleaks /usr/local/bin/
  • Dangerous shell operationline 83
    rm -f gitleaks.tar.gz

AGENTS.md

  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]

CODE_OF_CONDUCT.md

  • Network accessline 39
    Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement via [GitHub Issues](https://github.com/heygen-com/heygen-cli/issues). All complaints will be reviewed a
  • Network accessline 73
    This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
  • Network accessline 77
    For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].
  • Network accessline 79
    [homepage]: https://www.contributor-covenant.org
  • Network accessline 80
    [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
  • Network accessline 81
    [Mozilla CoC]: https://github.com/mozilla/diversity
  • Network accessline 82
    [FAQ]: https://www.contributor-covenant.org/faq
  • Network accessline 83
    [translations]: https://www.contributor-covenant.org/translations

CONTRIBUTING.md

  • Network accessline 5
    - Go 1.26+ - [golangci-lint](https://golangci-lint.run/) (for `make lint`)
  • Network accessline 6
    - [golangci-lint](https://golangci-lint.run/) (for `make lint`)
  • Access to secretsline 21
    [Credential-related source omitted]

LICENSE

  • Network accessline 1
    Apache License                            Version 2.0, January 2004                         http://www.apache.org/licenses/
  • Network accessline 3
    http://www.apache.org/licenses/
  • Network accessline 184
    http://www.apache.org/licenses/LICENSE-2.0

Makefile

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 19
    rm -rf bin/
  • Dangerous shell operationline 22
    @find gen/ -name '*.go' -delete 2>/dev/null || true

README.md

  • Network accessline 3
    [![CI](https://github.com/heygen-com/heygen-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/heygen-com/heygen-cli/actions/workflows/ci.yml)
  • Network accessline 4
    [![Go 1.26](https://img.shields.io/badge/Go-1.26-00ADD8?logo=go)](https://go.dev)
  • Network accessline 5
    [![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE)
  • Network accessline 11
    Full reference and examples: **[developers.heygen.com/cli](https://developers.heygen.com/cli)**.
  • Network accessline 22
    [heygen-com/skills](https://github.com/heygen-com/skills) — one-line install for Claude Code, Codex, and other agents. Create your own avatar and generate a video in a single conversation.
  • Access to secretsline 28
    [Credential-related source omitted]
  • Dangerous shell operationline 34
    curl -fsSL https://static.heygen.ai/cli/install.sh | bash
  • Network accessline 34
    curl -fsSL https://static.heygen.ai/cli/install.sh | bash
  • Access to secretsline 68
    [Credential-related source omitted]
  • Network accessline 103
    Verify any of the above with `heygen auth status`. When an API key is active, the status includes its name, permission mode and scopes, and expiration. Get an API key at [app.heygen.com/settings/api](https://app.heygen.com/settings/api).
  • Access to secretsline 105
    [Credential-related source omitted]
  • Access to secretsline 107
    [Credential-related source omitted]
  • Network accessline 126
    heygen video get <video-id> | jq -r '.data.video_page_url' # → https://app.heygen.com/videos/...
  • Network accessline 127
    # → https://app.heygen.com/videos/...
  • Network accessline 154
    Mirrors the [HeyGen v3 API](https://developers.heygen.com). Pattern: `heygen <noun> <verb>`.
  • Network accessline 187
    {"error": {"code": "not_found", "message": "Video not found", "hint": "Check ID with: heygen video list", "doc_url": "https://developers.heygen.com/docs/error-codes#not-found"}}
  • Access to secretsline 197
    [Credential-related source omitted]
  • Network accessline 207
    - **Quick signal (recommended for agents):** `heygen feedback --rating <1-5> --comment "..."`. Goes to private, anonymous analytics. Safe to run unattended. Usage telemetry is anonymous until you sign in: running `heygen auth login` links i
  • Network accessline 208
    - **Tracked bug a maintainer should see:** open a [GitHub issue](https://github.com/heygen-com/heygen-cli/issues). This repo is **public**, so review what you paste first and omit anything sensitive (API keys, prompts, internal URLs, person
  • Network accessline 222
    - [CLI Documentation](https://developers.heygen.com/cli)
  • Network accessline 223
    - [API Documentation](https://developers.heygen.com)
  • Network accessline 224
    - [Releases](https://github.com/heygen-com/heygen-cli/releases)

RELEASE.md

  • Access to secretsline 89
    [Credential-related source omitted]
  • Dangerous shell operationline 138
    curl -fsSL https://static.heygen.ai/cli/install.sh | bash
  • Network accessline 138
    curl -fsSL https://static.heygen.ai/cli/install.sh | bash

SECURITY.md

  • Network accessline 5
    If you discover a security vulnerability in the HeyGen CLI, please report it through [GitHub Security Advisories](https://github.com/heygen-com/heygen-cli/security/advisories/new). Do not open a public issue.

SKILL.md

  • Network accessline 10
    - **API Docs**: https://developers.heygen.com - **Install**: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash`
  • Dangerous shell operationline 11
    - **Install**: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash`
  • Network accessline 11
    - **Install**: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash`
  • Network accessline 12
    [Credential-related source omitted]
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Network accessline 45
    # Translate a video heygen video-translate create -d '{"video":{"type":"url","url":"https://..."},"output_languages":["es"]}'
  • Network accessline 46
    heygen video-translate create -d '{"video":{"type":"url","url":"https://..."},"output_languages":["es"]}'
  • Network accessline 162
    with `HEYGEN_NO_UPDATE_CHECK=1`. - Video download writes to `{video-id}.mp4` by default. Override with `--output-path`. Errors if the file already exists; use `--force` to overwrite. - For the full API reference (concepts, limits, pricing),
  • Network accessline 164
    - For the full API reference (concepts, limits, pricing), see https://developers.heygen.com

cmd/heygen/aliases.go

  • Executable scriptline 1
    Executable file

cmd/heygen/aliases_brandkit_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 18
    "GET /v3/brand-kits": { 			StatusCode: 200, 			Body:       `{"data":[{"brand_kit_id":"bk_1","name":"Acme","logo_url":"https://x/y.png","colors":["#ffffff"]}]}`,
  • Network accessline 19
    StatusCode: 200, 			Body:       `{"data":[{"brand_kit_id":"bk_1","name":"Acme","logo_url":"https://x/y.png","colors":["#ffffff"]}]}`, 		},
  • Network accessline 20
    Body:       `{"data":[{"brand_kit_id":"bk_1","name":"Acme","logo_url":"https://x/y.png","colors":["#ffffff"]}]}`,

cmd/heygen/aliases_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/auth.go

  • Executable scriptline 1
    Executable file
  • Network accessline 17
    2. Browser OAuth (uses subscription credits — opens https://app.heygen.com):
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 42
    [Credential-related source omitted]

cmd/heygen/auth_login.go

  • Executable scriptline 1
    Executable file
  • Network accessline 167
    The OAuth flow opens your default browser to https://app.heygen.com/oauth/authorize and waits for the redirect on a
  • Network accessline 168
    https://app.heygen.com/oauth/authorize and waits for the redirect on a
  • Access to secretsline 173
    [Credential-related source omitted]
  • Access to secretsline 181
    [Credential-related source omitted]
  • Access to secretsline 274
    [Credential-related source omitted]
  • Access to secretsline 298
    [Credential-related source omitted]
  • Access to secretsline 309
    [Credential-related source omitted]
  • Access to secretsline 326
    [Credential-related source omitted]
  • Access to secretsline 340
    [Credential-related source omitted]
  • Access to secretsline 347
    [Credential-related source omitted]
  • Access to secretsline 352
    [Credential-related source omitted]
  • Access to secretsline 361
    [Credential-related source omitted]
  • Access to secretsline 385
    [Credential-related source omitted]
  • Access to secretsline 386
    [Credential-related source omitted]
  • Access to secretsline 398
    [Credential-related source omitted]
  • Access to secretsline 463
    [Credential-related source omitted]
  • Access to secretsline 676
    [Credential-related source omitted]
  • Network accessline 817
    fmt.Fprintln(cmd.ErrOrStderr(), "Opening browser to https://app.heygen.com/oauth/authorize ...")
  • Access to secretsline 850
    [Credential-related source omitted]
  • Access to secretsline 855
    [Credential-related source omitted]
  • Access to secretsline 872
    [Credential-related source omitted]
  • Access to secretsline 873
    [Credential-related source omitted]
  • Access to secretsline 925
    [Credential-related source omitted]
  • Network accessline 991
    req.Header.Set("Authorization", "Bearer "+accessToken) 	req.Header.Set("User-Agent", "heygen-cli/device-login") 	hc := &http.Client{Timeout: 10 * time.Second}
  • Network accessline 992
    req.Header.Set("User-Agent", "heygen-cli/device-login") 	hc := &http.Client{Timeout: 10 * time.Second} 	resp, err := hc.Do(req) //nolint:gosec // G704: configured HeyGen API or explicit test endpoint
  • Network accessline 993
    hc := &http.Client{Timeout: 10 * time.Second}
  • Access to secretsline 1032
    [Credential-related source omitted]
  • Access to secretsline 1034
    [Credential-related source omitted]
  • Access to secretsline 1048
    [Credential-related source omitted]
  • Network accessline 1050
    func buildUsersMeRequest(ctx context.Context, baseURL string) (*http.Request, error) { 	if baseURL == "" { 		baseURL = "https://api.heygen.com"
  • Network accessline 1051
    if baseURL == "" { 		baseURL = "https://api.heygen.com" 	}
  • Network accessline 1052
    baseURL = "https://api.heygen.com"
  • Network accessline 1066
    func runUsersMeRequest(req *http.Request) auth.UserInfo { 	hc := &http.Client{Timeout: 10 * time.Second}
  • Network accessline 1067
    hc := &http.Client{Timeout: 10 * time.Second}

cmd/heygen/auth_login_device_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 126
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]

cmd/heygen/auth_login_dispatch_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 287
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("piped-key\n"),
  • Access to secretsline 293
    [Credential-related source omitted]
  • Access to secretsline 352
    [Credential-related source omitted]
  • Access to secretsline 362
    [Credential-related source omitted]
  • Access to secretsline 434
    [Credential-related source omitted]
  • Access to secretsline 446
    [Credential-related source omitted]
  • Access to secretsline 447
    [Credential-related source omitted]
  • Access to secretsline 449
    [Credential-related source omitted]
  • Access to secretsline 450
    [Credential-related source omitted]
  • Access to secretsline 457
    [Credential-related source omitted]
  • Access to secretsline 458
    [Credential-related source omitted]
  • Access to secretsline 470
    [Credential-related source omitted]
  • Access to secretsline 471
    [Credential-related source omitted]
  • Access to secretsline 473
    [Credential-related source omitted]
  • Access to secretsline 474
    [Credential-related source omitted]

cmd/heygen/auth_login_friendly_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 121
    [Credential-related source omitted]
  • Access to secretsline 127
    [Credential-related source omitted]
  • Access to secretsline 152
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]
  • Access to secretsline 193
    [Credential-related source omitted]

cmd/heygen/auth_login_oauth_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 64
    [Credential-related source omitted]
  • Network accessline 141
    c := &http.Client{Timeout: 5 * time.Second}
  • Access to secretsline 159
    [Credential-related source omitted]
  • Network accessline 168
    cfg := oauthLoginConfig{ 		AuthorizeURL: "http://127.0.0.1:1/oauth/authorize", // unused — we never visit it
  • Network accessline 169
    AuthorizeURL: "http://127.0.0.1:1/oauth/authorize", // unused — we never visit it
  • Access to secretsline 195
    [Credential-related source omitted]
  • Access to secretsline 245
    [Credential-related source omitted]
  • Network accessline 276
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("hg_xyz\n"),
  • Access to secretsline 295
    [Credential-related source omitted]
  • Access to secretsline 299
    [Credential-related source omitted]
  • Network accessline 311
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("hg_replacement\n"),
  • Access to secretsline 322
    [Credential-related source omitted]
  • Access to secretsline 336
    [Credential-related source omitted]
  • Network accessline 341
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("hg_first\n"),
  • Access to secretsline 359
    [Credential-related source omitted]
  • Access to secretsline 364
    [Credential-related source omitted]
  • Access to secretsline 366
    [Credential-related source omitted]
  • Access to secretsline 397
    [Credential-related source omitted]
  • Access to secretsline 399
    [Credential-related source omitted]
  • Access to secretsline 402
    [Credential-related source omitted]
  • Access to secretsline 403
    [Credential-related source omitted]
  • Access to secretsline 410
    [Credential-related source omitted]
  • Access to secretsline 412
    [Credential-related source omitted]
  • Access to secretsline 415
    [Credential-related source omitted]
  • Access to secretsline 419
    [Credential-related source omitted]
  • Access to secretsline 436
    [Credential-related source omitted]
  • Network accessline 447
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("hg_new\n"),
  • Access to secretsline 453
    [Credential-related source omitted]
  • Access to secretsline 459
    [Credential-related source omitted]
  • Network accessline 474
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader(""),
  • Network accessline 484
    // W4: when cfg.UsersMeBaseURL is empty (production path), the login // identity probe must read HEYGEN_API_BASE from the config provider // instead of hardcoding https://api.heygen.com. Without this, pointing
  • Network accessline 485
    // identity probe must read HEYGEN_API_BASE from the config provider // instead of hardcoding https://api.heygen.com. Without this, pointing // the CLI at a dev sandbox silently fans the probe out to prod.
  • Network accessline 486
    // instead of hardcoding https://api.heygen.com. Without this, pointing
  • Access to secretsline 491
    [Credential-related source omitted]
  • Access to secretsline 680
    [Credential-related source omitted]
  • Access to secretsline 744
    [Credential-related source omitted]
  • Access to secretsline 842
    [Credential-related source omitted]
  • Access to secretsline 878
    [Credential-related source omitted]
  • Access to secretsline 909
    [Credential-related source omitted]
  • Access to secretsline 941
    [Credential-related source omitted]
  • Access to secretsline 973
    [Credential-related source omitted]
  • Access to secretsline 1005
    [Credential-related source omitted]
  • Access to secretsline 1059
    [Credential-related source omitted]
  • Access to secretsline 1060
    [Credential-related source omitted]
  • Access to secretsline 1068
    [Credential-related source omitted]
  • Access to secretsline 1111
    [Credential-related source omitted]
  • Access to secretsline 1112
    [Credential-related source omitted]
  • Access to secretsline 1187
    [Credential-related source omitted]

cmd/heygen/auth_login_picker.go

  • Executable scriptline 1
    Executable file

cmd/heygen/auth_login_picker_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/auth_logout.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 45
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 75
    [Credential-related source omitted]
  • Access to secretsline 110
    [Credential-related source omitted]
  • Access to secretsline 125
    [Credential-related source omitted]

cmd/heygen/auth_logout_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 60
    func TestAuthLogoutConfigFromEnvironmentUsesRevokeOverride(t *testing.T) { 	t.Setenv("HEYGEN_OAUTH_REVOKE_URL", "http://127.0.0.1:18080/v1/oauth/revoke")
  • Network accessline 61
    t.Setenv("HEYGEN_OAUTH_REVOKE_URL", "http://127.0.0.1:18080/v1/oauth/revoke")
  • Network accessline 66
    if got.RevokeURL != "http://127.0.0.1:18080/v1/oauth/revoke" {
  • Access to secretsline 76
    [Credential-related source omitted]
  • Network accessline 94
    res := runAuthLogoutForTest(t, authLogoutConfig{RevokeURL: "http://127.0.0.1:1/revoke"})
  • Access to secretsline 99
    [Credential-related source omitted]
  • Network accessline 120
    res := runAuthLogoutForTest(t, authLogoutConfig{RevokeURL: "http://127.0.0.1:1/revoke"})
  • Access to secretsline 130
    [Credential-related source omitted]
  • Access to secretsline 131
    [Credential-related source omitted]
  • Network accessline 139
    res := runAuthLogoutForTest(t, authLogoutConfig{RevokeURL: "http://127.0.0.1:1/revoke"})

cmd/heygen/auth_status.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 154
    [Credential-related source omitted]
  • Access to secretsline 174
    [Credential-related source omitted]

cmd/heygen/auth_status_friendly_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Access to secretsline 126
    [Credential-related source omitted]
  • Access to secretsline 127
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]

cmd/heygen/auth_status_oauth_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 77
    [Credential-related source omitted]
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 130
    [Credential-related source omitted]
  • Access to secretsline 132
    [Credential-related source omitted]
  • Access to secretsline 145
    [Credential-related source omitted]
  • Access to secretsline 181
    [Credential-related source omitted]
  • Access to secretsline 208
    [Credential-related source omitted]
  • Access to secretsline 246
    [Credential-related source omitted]
  • Access to secretsline 259
    [Credential-related source omitted]
  • Access to secretsline 260
    [Credential-related source omitted]

cmd/heygen/auth_status_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 193
    [Credential-related source omitted]
  • Access to secretsline 272
    [Credential-related source omitted]
  • Access to secretsline 280
    [Credential-related source omitted]
  • Access to secretsline 342
    [Credential-related source omitted]
  • Access to secretsline 349
    [Credential-related source omitted]
  • Access to secretsline 382
    [Credential-related source omitted]
  • Network accessline 384
    res := runCommand(t, "http://example.invalid", "", "auth", "status")

cmd/heygen/auth_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 11
    [Credential-related source omitted]
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 34
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader(""), "auth", "login", "--api-key")
  • Access to secretsline 42
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Network accessline 55
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader(""), "auth", "login", "--api-key")
  • Network accessline 71
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("real-key\n"), "auth", "login", "--api-key")
  • Access to secretsline 78
    [Credential-related source omitted]
  • Network accessline 85
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("test-key-123\n"), "auth", "login", "--api-key")
  • Access to secretsline 101
    [Credential-related source omitted]
  • Network accessline 108
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("\n"), "auth", "login", "--api-key")
  • Network accessline 118
    first := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("first-key\n"), "auth", "login", "--api-key")
  • Network accessline 123
    second := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("second-key\n"), "auth", "login", "--api-key")
  • Access to secretsline 129
    [Credential-related source omitted]
  • Network accessline 136
    res := runCommandWithInput(t, "http://example.invalid", "", strings.NewReader("test-key-123\n"), "auth", "login", "--api-key")

cmd/heygen/builder.go

  • Executable scriptline 1
    Executable file
  • Instruction override signalline 233
    } 	if spec.Destructive { 		cmd.Flags().Bool("force", false, "Skip confirmation prompt for destructive operations")
  • Instruction override signalline 234
    if spec.Destructive { 		cmd.Flags().Bool("force", false, "Skip confirmation prompt for destructive operations") 	}
  • Instruction override signalline 235
    cmd.Flags().Bool("force", false, "Skip confirmation prompt for destructive operations")

cmd/heygen/builder_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 191
    func TestGenBuilder_VideoCreate_RequestSchema(t *testing.T) { 	res := runGenCommand(t, "http://example.test", "", videoCreateSchemaSpec, "create", "--request-schema")
  • Network accessline 192
    res := runGenCommand(t, "http://example.test", "", videoCreateSchemaSpec, "create", "--request-schema")
  • Network accessline 205
    func TestGenBuilder_VideoGet_ResponseSchema(t *testing.T) { 	res := runGenCommand(t, "http://example.test", "", videoGetSchemaSpec, "get", "vid_123", "--response-schema")
  • Network accessline 206
    res := runGenCommand(t, "http://example.test", "", videoGetSchemaSpec, "get", "vid_123", "--response-schema")
  • Network accessline 216
    func TestGenBuilder_VideoList_NoRequestSchema(t *testing.T) { 	res := runGenCommand(t, "http://example.test", "test-key", videoListSpec, "list", "--request-schema")
  • Network accessline 217
    res := runGenCommand(t, "http://example.test", "test-key", videoListSpec, "list", "--request-schema")
  • Network accessline 227
    func TestGenBuilder_VideoCreate_SchemaSkipsAuth(t *testing.T) { 	res := runGenCommand(t, "http://example.test", "", videoCreateSchemaSpec, "create", "--response-schema")
  • Network accessline 228
    res := runGenCommand(t, "http://example.test", "", videoCreateSchemaSpec, "create", "--response-schema")
  • Network accessline 238
    func TestGenBuilder_SchemaBypassesRequiredFlags(t *testing.T) { 	res := runGenCommand(t, "http://example.test", "", videoTranslateSchemaSpec, "create", "--request-schema")
  • Network accessline 239
    res := runGenCommand(t, "http://example.test", "", videoTranslateSchemaSpec, "create", "--request-schema")
  • Network accessline 252
    func TestGenBuilder_SchemaBypassesArgs(t *testing.T) { 	res := runGenCommand(t, "http://example.test", "", webhookEndpointUpdateSchemaSpec, "endpoints", "update", "--request-schema")
  • Network accessline 253
    res := runGenCommand(t, "http://example.test", "", webhookEndpointUpdateSchemaSpec, "endpoints", "update", "--request-schema")
  • Network accessline 266
    func TestGenBuilder_RequiredFlagsStillValidatedWithoutSchema(t *testing.T) { 	res := runGenCommand(t, "http://example.test", "test-key", videoTranslateSchemaSpec, "create")
  • Network accessline 267
    res := runGenCommand(t, "http://example.test", "test-key", videoTranslateSchemaSpec, "create")
  • Network accessline 277
    func TestGenBuilder_ArgsStillValidatedWithoutSchema(t *testing.T) { 	res := runGenCommand(t, "http://example.test", "", webhookEndpointUpdateSchemaSpec, "endpoints", "update")
  • Network accessline 278
    res := runGenCommand(t, "http://example.test", "", webhookEndpointUpdateSchemaSpec, "endpoints", "update")
  • Network accessline 332
    res := runGenCommand(t, "http://example.test", "test-key", spec, "create", "-d", `{"title":"Demo"}`)
  • Network accessline 357
    res := runGenCommand(t, "http://example.test", "test-key", spec, "create", "--help")
  • Network accessline 390
    res := runGenCommand(t, "http://example.test", "test-key", spec, "glossaries", "list", "--help")
  • Network accessline 607
    return 			} 			_, _ = w.Write([]byte(`{"data":{"video_id":"vid_123","status":"completed","video_url":"https://cdn.test/video.mp4"}}`))
  • Network accessline 608
    } 			_, _ = w.Write([]byte(`{"data":{"video_id":"vid_123","status":"completed","video_url":"https://cdn.test/video.mp4"}}`)) 			return
  • Network accessline 609
    _, _ = w.Write([]byte(`{"data":{"video_id":"vid_123","status":"completed","video_url":"https://cdn.test/video.mp4"}}`))
  • Network accessline 661
    return 			} 			_, _ = w.Write([]byte(`{"data":{"video_id":"vid_123","status":"completed","video_url":"https://cdn.test/video.mp4"}}`))
  • Network accessline 662
    } 			_, _ = w.Write([]byte(`{"data":{"video_id":"vid_123","status":"completed","video_url":"https://cdn.test/video.mp4"}}`)) 			return
  • Network accessline 663
    _, _ = w.Write([]byte(`{"data":{"video_id":"vid_123","status":"completed","video_url":"https://cdn.test/video.mp4"}}`))
  • Network accessline 990
    {Name: "entity-id", Type: "string", Source: "body", JSONName: "entity_id"}, 		}, 		Examples: []string{"heygen webhook create --url https://example.com/hook"},
  • Network accessline 991
    }, 		Examples: []string{"heygen webhook create --url https://example.com/hook"}, 	}
  • Network accessline 992
    Examples: []string{"heygen webhook create --url https://example.com/hook"},
  • Network accessline 995
    res := runGenCommand(t, srv.URL, "test-key", spec, 		"create", "--url", "https://example.com/hook", "--entity-id", "proj_456")
  • Network accessline 996
    "create", "--url", "https://example.com/hook", "--entity-id", "proj_456")
  • Network accessline 999
    t.Errorf("ExitCode = %d, want 0\nstderr: %s", res.ExitCode, res.Stderr) 	} 	if gotBody["url"] != "https://example.com/hook" {
  • Network accessline 1000
    } 	if gotBody["url"] != "https://example.com/hook" { 		t.Errorf("body.url = %v, want %q", gotBody["url"], "https://example.com/hook")
  • Network accessline 1001
    if gotBody["url"] != "https://example.com/hook" {
  • Network accessline 1002
    t.Errorf("body.url = %v, want %q", gotBody["url"], "https://example.com/hook")
  • Network accessline 1118
    {Name: "events", Type: "string-slice", Source: "body", JSONName: "events", Enum: []string{"avatar_video.success", "avatar_video.fail"}}, 		}, 		Examples: []string{"heygen webhook endpoints create --url https://example.com/hook --events avat
  • Network accessline 1119
    }, 		Examples: []string{"heygen webhook endpoints create --url https://example.com/hook --events avatar_video.success"}, 	}
  • Network accessline 1120
    Examples: []string{"heygen webhook endpoints create --url https://example.com/hook --events avatar_video.success"},
  • Network accessline 1123
    res := runGenCommand(t, srv.URL, "test-key", spec, "endpoints", "create", 		"--url", "https://example.com/hook", "--events", "avatar_video.success")
  • Network accessline 1124
    "--url", "https://example.com/hook", "--events", "avatar_video.success")
  • Network accessline 1236
    res := runGeneratedRootCommand(t, "http://example.test", "test-key",
  • Access to secretsline 1334
    [Credential-related source omitted]

cmd/heygen/columns.go

  • Executable scriptline 1
    Executable file

cmd/heygen/columns_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/config_cmd.go

  • Executable scriptline 1
    Executable file

cmd/heygen/config_cmd_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    res := runCommand(t, "http://example.invalid", "", "config", "set", "output", "human")
  • Network accessline 30
    func TestConfigSet_InvalidKey(t *testing.T) { 	t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "set", "bogus", "value")
  • Network accessline 31
    t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "set", "bogus", "value") 	if res.ExitCode != 2 {
  • Network accessline 32
    res := runCommand(t, "http://example.invalid", "", "config", "set", "bogus", "value")
  • Network accessline 38
    func TestConfigSet_APIBaseNotExposed(t *testing.T) { 	t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "set", "api_base", "https://api-dev.heygen.com")
  • Network accessline 39
    t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "set", "api_base", "https://api-dev.heygen.com") 	if res.ExitCode != 2 {
  • Network accessline 40
    res := runCommand(t, "http://example.invalid", "", "config", "set", "api_base", "https://api-dev.heygen.com")
  • Network accessline 46
    func TestConfigSet_InvalidOutputValue(t *testing.T) { 	t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "set", "output", "xml")
  • Network accessline 47
    t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "set", "output", "xml") 	if res.ExitCode != 2 {
  • Network accessline 48
    res := runCommand(t, "http://example.invalid", "", "config", "set", "output", "xml")
  • Network accessline 54
    func TestConfigSet_SkipsAuth(t *testing.T) { 	t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "set", "output", "human")
  • Network accessline 55
    t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "set", "output", "human") 	if res.ExitCode != 0 {
  • Network accessline 56
    res := runCommand(t, "http://example.invalid", "", "config", "set", "output", "human")
  • Network accessline 62
    func TestConfigGet_Default(t *testing.T) { 	t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "get", "output")
  • Network accessline 63
    t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "get", "output") 	if res.ExitCode != 0 {
  • Network accessline 64
    res := runCommand(t, "http://example.invalid", "", "config", "get", "output")
  • Network accessline 84
    res := runCommand(t, "http://example.invalid", "", "config", "get", "output", "--human=false")
  • Network accessline 106
    res := runCommand(t, "http://example.invalid", "", "config", "get", "output", "--human=false")
  • Network accessline 120
    func TestConfigGet_InvalidKey(t *testing.T) { 	t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "get", "bogus")
  • Network accessline 121
    t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "get", "bogus") 	if res.ExitCode != 2 {
  • Network accessline 122
    res := runCommand(t, "http://example.invalid", "", "config", "get", "bogus")
  • Network accessline 128
    func TestConfigList_AllDefaults(t *testing.T) { 	t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "list")
  • Network accessline 129
    t.Setenv("HEYGEN_CONFIG_DIR", t.TempDir()) 	res := runCommand(t, "http://example.invalid", "", "config", "list") 	if res.ExitCode != 0 {
  • Network accessline 130
    res := runCommand(t, "http://example.invalid", "", "config", "list")
  • Network accessline 151
    res := runCommand(t, "http://example.invalid", "", "config", "list")
  • Network accessline 168
    dir := t.TempDir() 	t.Setenv("HEYGEN_CONFIG_DIR", dir) 	if res := runCommand(t, "http://example.invalid", "", "config", "set", "update_check", "false"); res.ExitCode != 0 {
  • Network accessline 169
    t.Setenv("HEYGEN_CONFIG_DIR", dir) 	if res := runCommand(t, "http://example.invalid", "", "config", "set", "update_check", "false"); res.ExitCode != 0 { 		t.Fatalf("config set: exit %d, stderr %s", res.ExitCode, res.Stderr)
  • Network accessline 170
    if res := runCommand(t, "http://example.invalid", "", "config", "set", "update_check", "false"); res.ExitCode != 0 {
  • Network accessline 180
    } 	t.Setenv("HEYGEN_NO_UPDATE_CHECK", "1") 	res := runCommand(t, "http://example.invalid", "", "config", "get", "update_check")
  • Network accessline 181
    t.Setenv("HEYGEN_NO_UPDATE_CHECK", "1") 	res := runCommand(t, "http://example.invalid", "", "config", "get", "update_check") 	var got configResponse
  • Network accessline 182
    res := runCommand(t, "http://example.invalid", "", "config", "get", "update_check")

cmd/heygen/confirm.go

  • Executable scriptline 1
    Executable file

cmd/heygen/confirm_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/context.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 94
    [Credential-related source omitted]

cmd/heygen/context_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 27
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Network accessline 88
    res := runCommand(t, "http://example.invalid", "", "video", "list")
  • Access to secretsline 117
    [Credential-related source omitted]
  • Access to secretsline 144
    [Credential-related source omitted]

cmd/heygen/deprecated_flags_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/feedback.go

  • Executable scriptline 1
    Executable file

cmd/heygen/feedback_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/formatter_select.go

  • Executable scriptline 1
    Executable file

cmd/heygen/generated_example_flags_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/generated_examples_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/generated_root_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 277
    func TestGeneratedRoot_VideoCreate_RequestSchema_NoAuth(t *testing.T) { 	res := runCommand(t, "http://example.test", "", "video", "create", "--request-schema")
  • Network accessline 278
    res := runCommand(t, "http://example.test", "", "video", "create", "--request-schema")
  • Network accessline 295
    func TestGeneratedRoot_VideoGet_ResponseSchema_NoAuth(t *testing.T) { 	res := runCommand(t, "http://example.test", "", "video", "get", "vid_123", "--response-schema")
  • Network accessline 296
    res := runCommand(t, "http://example.test", "", "video", "get", "vid_123", "--response-schema")
  • Network accessline 313
    "GET /v3/videos": { 			StatusCode: 200, 			Body:       `{"data":[{"id":"vid_123","title":"Demo","status":"completed","created_at":1710000000,"thumbnail_url":"https://cdn.example/thumb.jpg"}]}`,
  • Network accessline 314
    StatusCode: 200, 			Body:       `{"data":[{"id":"vid_123","title":"Demo","status":"completed","created_at":1710000000,"thumbnail_url":"https://cdn.example/thumb.jpg"}]}`, 		},
  • Network accessline 315
    Body:       `{"data":[{"id":"vid_123","title":"Demo","status":"completed","created_at":1710000000,"thumbnail_url":"https://cdn.example/thumb.jpg"}]}`,
  • Network accessline 385
    "GET /v3/avatars/looks": { 			StatusCode: 200, 			Body:       `{"data":[{"id":"look_001","name":"Default","avatar_type":"studio_avatar","preview_image_url":"https://cdn.example/look.png","gender":"female"}]}`,
  • Network accessline 386
    StatusCode: 200, 			Body:       `{"data":[{"id":"look_001","name":"Default","avatar_type":"studio_avatar","preview_image_url":"https://cdn.example/look.png","gender":"female"}]}`, 		},
  • Network accessline 387
    Body:       `{"data":[{"id":"look_001","name":"Default","avatar_type":"studio_avatar","preview_image_url":"https://cdn.example/look.png","gender":"female"}]}`,

cmd/heygen/go_version_pin_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/headers_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/help_flatten.go

  • Executable scriptline 1
    Executable file

cmd/heygen/hidden_commands_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/idempotency_key_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/instant_video_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 67
    "GET /v3/models/videos/video-1": { 			StatusCode: http.StatusOK, 			Body:       `{"data":{"video_id":"video-1","status":"completed","video_url":"https://example.com/result.mp4"}}`,
  • Network accessline 68
    StatusCode: http.StatusOK, 			Body:       `{"data":{"video_id":"video-1","status":"completed","video_url":"https://example.com/result.mp4"}}`, 		},
  • Network accessline 69
    Body:       `{"data":{"video_id":"video-1","status":"completed","video_url":"https://example.com/result.mp4"}}`,
  • Network accessline 75
    t.Fatalf("exit=%d stderr=%s", result.ExitCode, result.Stderr) 	} 	if !strings.Contains(result.Stdout, "https://example.com/result.mp4") {
  • Network accessline 76
    } 	if !strings.Contains(result.Stdout, "https://example.com/result.mp4") { 		t.Fatalf("missing result URL: %s", result.Stdout)
  • Network accessline 77
    if !strings.Contains(result.Stdout, "https://example.com/result.mp4") {

cmd/heygen/main.go

  • Executable scriptline 1
    Executable file

cmd/heygen/main_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/poll_configs.go

  • Executable scriptline 1
    Executable file

cmd/heygen/poll_configs_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/root.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 83
    [Credential-related source omitted]

cmd/heygen/root_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    func TestCommandGroup_UnknownSubcommand_ListsAvailable(t *testing.T) { 	res := runCommand(t, "http://example.invalid", "test-key", "user", "info")
  • Network accessline 11
    res := runCommand(t, "http://example.invalid", "test-key", "user", "info")
  • Network accessline 30
    func TestCommandGroup_BareInvocation_ShowsHelp(t *testing.T) { 	res := runCommand(t, "http://example.invalid", "test-key", "user")
  • Network accessline 31
    res := runCommand(t, "http://example.invalid", "test-key", "user")

cmd/heygen/testutil_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 84
    [Credential-related source omitted]

cmd/heygen/timeouts.go

  • Executable scriptline 1
    Executable file

cmd/heygen/timeouts_test.go

  • Executable scriptline 1
    Executable file

cmd/heygen/update.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 331
    [Credential-related source omitted]
  • Access to secretsline 334
    [Credential-related source omitted]

cmd/heygen/update_notice.go

  • Executable scriptline 1
    Executable file
  • Network accessline 41
    updateStablePointerURL = "https://static.heygen.ai/cli/stable"

cmd/heygen/update_notice_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 487
    [Credential-related source omitted]

cmd/heygen/update_notice_unix.go

  • Executable scriptline 1
    Executable file

cmd/heygen/update_notice_windows.go

  • Executable scriptline 1
    Executable file

cmd/heygen/update_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 44
    [Credential-related source omitted]

cmd/heygen/video_download.go

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    var downloadClient = &http.Client{Timeout: 10 * time.Minute}

cmd/heygen/video_download_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 309
    "GET /v3/videos/vid_123": { 			StatusCode: 200, 			Body:       `{"data":{"video_url":"https://example.test/video.mp4","status":"completed"}}`,
  • Network accessline 310
    StatusCode: 200, 			Body:       `{"data":{"video_url":"https://example.test/video.mp4","status":"completed"}}`, 			ValidateRequest: func(t *testing.T, r *http.Request) {
  • Network accessline 311
    Body:       `{"data":{"video_url":"https://example.test/video.mp4","status":"completed"}}`,
  • Network accessline 484
    if r.URL.Path == "/v3/videos/vid_123" { 				writeJSON(t, w, map[string]any{ 					"data": map[string]any{"video_url": "http://%zz", "status": "completed"},
  • Network accessline 485
    writeJSON(t, w, map[string]any{ 					"data": map[string]any{"video_url": "http://%zz", "status": "completed"}, 				})
  • Network accessline 486
    "data": map[string]any{"video_url": "http://%zz", "status": "completed"},

cmd/heygen/video_list_test.go

  • Executable scriptline 1
    Executable file

codegen/examples.go

  • Executable scriptline 1
    Executable file

codegen/examples/background-removal.yaml

  • Network accessline 1
    "POST /v3/background-removals":   - desc: "Submit a video for background removal (returns a job id; poll with get)"     cmd: "heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"}}'"
  • Network accessline 2
    - desc: "Submit a video for background removal (returns a job id; poll with get)"     cmd: "heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"}}'"   - desc: "Submit with explicit layer
  • Network accessline 3
    cmd: "heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"}}'"
  • Network accessline 4
    - desc: "Submit with explicit layer set"     cmd: "heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"},\"layers\":[\"foreground\",\"mask\",\"background\"]}'"   - desc: "See all availab
  • Network accessline 5
    cmd: "heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"},\"layers\":[\"foreground\",\"mask\",\"background\"]}'"

codegen/examples/brand.yaml

  • Network accessline 4
    "POST /v3/brand-kits":   - desc: "Build a brand kit from a public website, importing its logos, colors and fonts"     cmd: "heygen brand kits create --url https://www.heygen.com"
  • Network accessline 5
    - desc: "Build a brand kit from a public website, importing its logos, colors and fonts"     cmd: "heygen brand kits create --url https://www.heygen.com"   - desc: "Name the kit yourself instead of taking the brand name detected on the site
  • Network accessline 6
    cmd: "heygen brand kits create --url https://www.heygen.com"
  • Network accessline 7
    - desc: "Name the kit yourself instead of taking the brand name detected on the site"     cmd: "heygen brand kits create --url https://www.heygen.com --name 'HeyGen brand'" "GET /v3/brand-kits/{brand_kit_id}":
  • Network accessline 8
    cmd: "heygen brand kits create --url https://www.heygen.com --name 'HeyGen brand'"

codegen/examples/filler-word-removal.yaml

  • Network accessline 1
    "POST /v3/filler-word-removals":   - desc: "Submit a video to strip filler words and overlong silences"     cmd: "heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"}}'"
  • Network accessline 2
    - desc: "Submit a video to strip filler words and overlong silences"     cmd: "heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"}}'"   - desc: "Submit a previously uploaded asset ins
  • Network accessline 3
    cmd: "heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"}}'"
  • Network accessline 5
    cmd: "heygen filler-word-removal create -d '{\"video\":{\"type\":\"asset_id\",\"asset_id\":\"<asset-id>\"}}'"   - desc: "Set a title and get a webhook when the job finishes"     cmd: "heygen filler-word-removal create -d '{\"video\":{\"type
  • Network accessline 6
    - desc: "Set a title and get a webhook when the job finishes"     cmd: "heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"},\"title\":\"Q3 all-hands\",\"callback_url\":\"https://examp
  • Network accessline 7
    cmd: "heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"},\"title\":\"Q3 all-hands\",\"callback_url\":\"https://example.com/hooks/heygen\",\"callback_id\":\"all-hands-q3\"}'"

codegen/examples/lipsync.yaml

  • Network accessline 16
    "POST /v3/lipsyncs/batches":   - desc: "Submit a batch of lipsync jobs in one request (up to 100 items)"     cmd: "heygen lipsync batches create --title 'Dub batch' -d '{\"lipsyncs\":[{\"video\":{\"type\":\"url\",\"url\":\"https://example.c
  • Network accessline 17
    - desc: "Submit a batch of lipsync jobs in one request (up to 100 items)"     cmd: "heygen lipsync batches create --title 'Dub batch' -d '{\"lipsyncs\":[{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/source.mp4\"},\"audio\":{\"t
  • Network accessline 18
    cmd: "heygen lipsync batches create --title 'Dub batch' -d '{\"lipsyncs\":[{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/source.mp4\"},\"audio\":{\"type\":\"url\",\"url\":\"https://example.com/replacement.mp3\"}}]}'"

codegen/examples/model.yaml

  • Network accessline 8
    cmd: "heygen model audio sts create --voice-id <voice-id> -d '{\"audio\":{\"type\":\"asset_id\",\"asset_id\":\"<asset-id>\"}}'"   - desc: "Clean background noise from a URL source first, with an idempotency key for retries"     cmd: "heygen
  • Network accessline 9
    - desc: "Clean background noise from a URL source first, with an idempotency key for retries"     cmd: "heygen model audio sts create --voice-id <voice-id> --remove-background-noise --idempotency-key <unique-key> -d '{\"audio\":{\"type\":\"
  • Network accessline 10
    cmd: "heygen model audio sts create --voice-id <voice-id> --remove-background-noise --idempotency-key <unique-key> -d '{\"audio\":{\"type\":\"url\",\"url\":\"https://example.com/speech.mp3\"}}'"

codegen/examples/video-translate.yaml

  • Network accessline 42
    "POST /v3/video-translations/batches":   - desc: "Submit a batch of translations in one request (up to 100 items; multiple output languages fan out per item)"     cmd: "heygen video-translate batches create --title 'Localization batch' -d '
  • Network accessline 43
    - desc: "Submit a batch of translations in one request (up to 100 items; multiple output languages fan out per item)"     cmd: "heygen video-translate batches create --title 'Localization batch' -d '{\"video_translations\":[{\"video\":{\"ty
  • Network accessline 44
    cmd: "heygen video-translate batches create --title 'Localization batch' -d '{\"video_translations\":[{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/source.mp4\"},\"output_languages\":[\"Spanish (Spain)\",\"French (France)\"]}]}

codegen/examples/video.yaml

  • Network accessline 8
    cmd: "heygen video create -d '{\"type\":\"avatar\",\"avatar_id\":\"<avatar-id>\",\"script\":\"Hello world\",\"voice_id\":\"<voice-id>\"}' --wait"   - desc: "Create from a custom image"     cmd: "heygen video create -d '{\"type\":\"image\",\
  • Network accessline 9
    - desc: "Create from a custom image"     cmd: "heygen video create -d '{\"type\":\"image\",\"image\":{\"type\":\"url\",\"url\":\"https://example.com/photo.jpg\"},\"script\":\"Hello\",\"voice_id\":\"<voice-id>\"}' --wait"   - desc: "See all 
  • Network accessline 10
    cmd: "heygen video create -d '{\"type\":\"image\",\"image\":{\"type\":\"url\",\"url\":\"https://example.com/photo.jpg\"},\"script\":\"Hello\",\"voice_id\":\"<voice-id>\"}' --wait"

codegen/examples/voice.yaml

  • Network accessline 21
    "POST /v3/voices/clone":   - desc: "Clone a voice from a URL"     cmd: "heygen voice clone create --voice-name 'My Clone' -d '{\"audio\":{\"type\":\"url\",\"url\":\"https://example.com/sample.mp3\"}}'"
  • Network accessline 22
    - desc: "Clone a voice from a URL"     cmd: "heygen voice clone create --voice-name 'My Clone' -d '{\"audio\":{\"type\":\"url\",\"url\":\"https://example.com/sample.mp3\"}}'"   - desc: "Clone from an uploaded asset"
  • Network accessline 23
    cmd: "heygen voice clone create --voice-name 'My Clone' -d '{\"audio\":{\"type\":\"url\",\"url\":\"https://example.com/sample.mp3\"}}'"

codegen/examples/webhook.yaml

  • Network accessline 4
    "POST /v3/webhooks/endpoints":   - desc: "Register a webhook"     cmd: "heygen webhook endpoints create --url https://example.com/hook"
  • Network accessline 5
    - desc: "Register a webhook"     cmd: "heygen webhook endpoints create --url https://example.com/hook"   - desc: "Register with event filter"
  • Network accessline 6
    cmd: "heygen webhook endpoints create --url https://example.com/hook"
  • Network accessline 7
    - desc: "Register with event filter"     cmd: "heygen webhook endpoints create --url https://example.com/hook --events avatar_video.success --events avatar_video.fail" "PATCH /v3/webhooks/endpoints/{endpoint_id}":
  • Network accessline 8
    cmd: "heygen webhook endpoints create --url https://example.com/hook --events avatar_video.success --events avatar_video.fail"
  • Network accessline 9
    "PATCH /v3/webhooks/endpoints/{endpoint_id}":   - desc: "Update webhook URL"     cmd: "heygen webhook endpoints update <endpoint-id> --url https://new.example.com/hook"
  • Network accessline 10
    - desc: "Update webhook URL"     cmd: "heygen webhook endpoints update <endpoint-id> --url https://new.example.com/hook" "DELETE /v3/webhooks/endpoints/{endpoint_id}":
  • Network accessline 11
    cmd: "heygen webhook endpoints update <endpoint-id> --url https://new.example.com/hook"

codegen/examples_test.go

  • Executable scriptline 1
    Executable file

codegen/generate.go

  • Executable scriptline 1
    Executable file

codegen/generate_test.go

  • Executable scriptline 1
    Executable file

codegen/grouper.go

  • Executable scriptline 1
    Executable file

codegen/grouper_test.go

  • Executable scriptline 1
    Executable file

codegen/main.go

  • Executable scriptline 1
    Executable file

codegen/schema.go

  • Executable scriptline 1
    Executable file

codegen/schema_test.go

  • Executable scriptline 1
    Executable file

codegen/surface_allowlist_test.go

  • Executable scriptline 1
    Executable file

codegen/testdata/golden/registry.go

  • Executable scriptline 1
    Executable file

codegen/testdata/golden/upload.go

  • Executable scriptline 1
    Executable file

codegen/testdata/golden/widget.go

  • Executable scriptline 1
    Executable file

docs/demo.tape

  • Access to secretsline 2
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]

gen/ai-clipping.go

  • Executable scriptline 1
    Executable file

gen/asset.go

  • Executable scriptline 1
    Executable file

gen/audio.go

  • Executable scriptline 1
    Executable file

gen/avatar.go

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    Summary:        "Create Avatar Consent", 	Description:    "Starts the consent flow for an avatar group and returns a URL where the subject approves in their browser. Required before a private avatar can generate video. The link expires afte
  • Network accessline 11
    Description:    "Starts the consent flow for an avatar group and returns a URL where the subject approves in their browser. Required before a private avatar can generate video. The link expires after 24 hours and accepts one submission.", 	
  • Network accessline 12
    RequestSchema:  "{\n  \"description\": \"Request body for POST /v3/avatars/{group_id}/consent.\",\n  \"properties\": {\n    \"consent_text\": {\n      \"description\": \"Custom consent text rendered on the consent page in place of the defau
  • Network accessline 54
    Summary:        "Create Avatar", 	Description:    "Creates a new avatar from an image, video footage, or a text prompt. Supports photo, digital_twin, and prompt types. Avatar training is asynchronous.", 	RequestSchema:  "{\n  \"description\
  • Network accessline 55
    Description:    "Creates a new avatar from an image, video footage, or a text prompt. Supports photo, digital_twin, and prompt types. Avatar training is asynchronous.", 	RequestSchema:  "{\n  \"description\": \"Discriminated union for POST 
  • Network accessline 56
    RequestSchema:  "{\n  \"description\": \"Discriminated union for POST /v3/avatars request body.\",\n  \"discriminator\": {\n    \"mapping\": {\n      \"digital_twin\": \"#/components/schemas/CreateDigitalTwinRequest\",\n      \"photo\": \"#

gen/background-removal.go

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    BodyEncoding:   "json", 	Examples: []string{ 		"# Submit a video for background removal (returns a job id; poll with get)\n  heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"}}'",
  • Network accessline 17
    Examples: []string{ 		"# Submit a video for background removal (returns a job id; poll with get)\n  heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"}}'", 		"# Submit with explicit la
  • Network accessline 18
    "# Submit a video for background removal (returns a job id; poll with get)\n  heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"}}'",
  • Network accessline 19
    "# Submit with explicit layer set\n  heygen background-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/clip.mp4\"},\"layers\":[\"foreground\",\"mask\",\"background\"]}'",

gen/brand.go

  • Executable scriptline 1
    Executable file
  • Network accessline 171
    BodyEncoding:   "json", 	Examples: []string{ 		"# Build a brand kit from a public website, importing its logos, colors and fonts\n  heygen brand kits create --url https://www.heygen.com",
  • Network accessline 172
    Examples: []string{ 		"# Build a brand kit from a public website, importing its logos, colors and fonts\n  heygen brand kits create --url https://www.heygen.com", 		"# Name the kit yourself instead of taking the brand name detected on the s
  • Network accessline 173
    "# Build a brand kit from a public website, importing its logos, colors and fonts\n  heygen brand kits create --url https://www.heygen.com",
  • Network accessline 174
    "# Name the kit yourself instead of taking the brand name detected on the site\n  heygen brand kits create --url https://www.heygen.com --name 'HeyGen brand'",

gen/filler-word-removal.go

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    BodyEncoding:  "json", 	Examples: []string{ 		"# Submit a video to strip filler words and overlong silences\n  heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"}}'",
  • Network accessline 16
    Examples: []string{ 		"# Submit a video to strip filler words and overlong silences\n  heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"}}'", 		"# Submit a previously uploaded asset 
  • Network accessline 17
    "# Submit a video to strip filler words and overlong silences\n  heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"}}'",
  • Network accessline 18
    "# Submit a previously uploaded asset instead of a URL\n  heygen filler-word-removal create -d '{\"video\":{\"type\":\"asset_id\",\"asset_id\":\"<asset-id>\"}}'", 		"# Set a title and get a webhook when the job finishes\n  heygen filler-wor
  • Network accessline 19
    "# Set a title and get a webhook when the job finishes\n  heygen filler-word-removal create -d '{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/talk.mp4\"},\"title\":\"Q3 all-hands\",\"callback_url\":\"https://example.com/hooks/h

gen/folder.go

  • Executable scriptline 1
    Executable file

gen/lipsync.go

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    BodyEncoding:  "json", 	Examples: []string{ 		"# Submit a batch of lipsync jobs in one request (up to 100 items)\n  heygen lipsync batches create --title 'Dub batch' -d '{\"lipsyncs\":[{\"video\":{\"type\":\"url\",\"url\":\"https://example.
  • Network accessline 16
    Examples: []string{ 		"# Submit a batch of lipsync jobs in one request (up to 100 items)\n  heygen lipsync batches create --title 'Dub batch' -d '{\"lipsyncs\":[{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/source.mp4\"},\"audi
  • Network accessline 17
    "# Submit a batch of lipsync jobs in one request (up to 100 items)\n  heygen lipsync batches create --title 'Dub batch' -d '{\"lipsyncs\":[{\"video\":{\"type\":\"url\",\"url\":\"https://example.com/source.mp4\"},\"audio\":{\"type\":\"url\",

gen/model.go

  • Executable scriptline 1
    Executable file
  • Network accessline 17
    Examples: []string{ 		"# Re-speak a recording in one of your instant voices, keeping its words and timing\n  heygen model audio sts create --voice-id <voice-id> -d '{\"audio\":{\"type\":\"asset_id\",\"asset_id\":\"<asset-id>\"}}'", 		"# Cle
  • Network accessline 18
    "# Re-speak a recording in one of your instant voices, keeping its words and timing\n  heygen model audio sts create --voice-id <voice-id> -d '{\"audio\":{\"type\":\"asset_id\",\"asset_id\":\"<asset-id>\"}}'", 		"# Clean background noise fr
  • Network accessline 19
    "# Clean background noise from a URL source first, with an idempotency key for retries\n  heygen model audio sts create --voice-id <voice-id> --remove-background-noise --idempotency-key <unique-key> -d '{\"audio\":{\"type\":\"url\",\"url\":

gen/registry.go

  • Executable scriptline 1
    Executable file

gen/template.go

  • Executable scriptline 1
    Executable file

gen/user.go

  • Executable scriptline 1
    Executable file

gen/video-agent.go

  • Executable scriptline 1
    Executable file

gen/video-translate.go

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    BodyEncoding:  "json", 	Examples: []string{ 		"# Submit a batch of translations in one request (up to 100 items; multiple output languages fan out per item)\n  heygen video-translate batches create --title 'Localization batch' -d '{\"video_
  • Network accessline 16
    Examples: []string{ 		"# Submit a batch of translations in one request (up to 100 items; multiple output languages fan out per item)\n  heygen video-translate batches create --title 'Localization batch' -d '{\"video_translations\":[{\"video
  • Network accessline 17
    "# Submit a batch of translations in one request (up to 100 items; multiple output languages fan out per item)\n  heygen video-translate batches create --title 'Localization batch' -d '{\"video_translations\":[{\"video\":{\"type\":\"url\",\

gen/video.go

  • Executable scriptline 1
    Executable file
  • Network accessline 126
    Examples: []string{ 		"# Create an avatar video and wait for completion\n  heygen video create -d '{\"type\":\"avatar\",\"avatar_id\":\"<avatar-id>\",\"script\":\"Hello world\",\"voice_id\":\"<voice-id>\"}' --wait", 		"# Create from a custo
  • Network accessline 127
    "# Create an avatar video and wait for completion\n  heygen video create -d '{\"type\":\"avatar\",\"avatar_id\":\"<avatar-id>\",\"script\":\"Hello world\",\"voice_id\":\"<voice-id>\"}' --wait", 		"# Create from a custom image\n  heygen vide
  • Network accessline 128
    "# Create from a custom image\n  heygen video create -d '{\"type\":\"image\",\"image\":{\"type\":\"url\",\"url\":\"https://example.com/photo.jpg\"},\"script\":\"Hello\",\"voice_id\":\"<voice-id>\"}' --wait",

gen/voice.go

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    BodyEncoding:   "json", 	Examples: []string{ 		"# Clone a voice from a URL\n  heygen voice clone create --voice-name 'My Clone' -d '{\"audio\":{\"type\":\"url\",\"url\":\"https://example.com/sample.mp3\"}}'",
  • Network accessline 17
    Examples: []string{ 		"# Clone a voice from a URL\n  heygen voice clone create --voice-name 'My Clone' -d '{\"audio\":{\"type\":\"url\",\"url\":\"https://example.com/sample.mp3\"}}'", 		"# Clone from an uploaded asset\n  heygen voice clone 
  • Network accessline 18
    "# Clone a voice from a URL\n  heygen voice clone create --voice-name 'My Clone' -d '{\"audio\":{\"type\":\"url\",\"url\":\"https://example.com/sample.mp3\"}}'",

gen/webhook.go

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    BodyEncoding:   "json", 	Examples: []string{ 		"# Register a webhook\n  heygen webhook endpoints create --url https://example.com/hook",
  • Network accessline 17
    Examples: []string{ 		"# Register a webhook\n  heygen webhook endpoints create --url https://example.com/hook", 		"# Register with event filter\n  heygen webhook endpoints create --url https://example.com/hook --events avatar_video.success 
  • Network accessline 18
    "# Register a webhook\n  heygen webhook endpoints create --url https://example.com/hook",
  • Network accessline 19
    "# Register with event filter\n  heygen webhook endpoints create --url https://example.com/hook --events avatar_video.success --events avatar_video.fail",
  • Network accessline 172
    BodyEncoding:   "json", 	Examples: []string{ 		"# Update webhook URL\n  heygen webhook endpoints update <endpoint-id> --url https://new.example.com/hook",
  • Network accessline 173
    Examples: []string{ 		"# Update webhook URL\n  heygen webhook endpoints update <endpoint-id> --url https://new.example.com/hook", 	},
  • Network accessline 174
    "# Update webhook URL\n  heygen webhook endpoints update <endpoint-id> --url https://new.example.com/hook",

internal/analytics/analytics.go

  • Executable scriptline 1
    Executable file
  • Network accessline 26
    var posthogEndpoint = "https://us.i.posthog.com"
  • Access to secretsline 245
    [Credential-related source omitted]

internal/analytics/analytics_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 633
    [Credential-related source omitted]
  • Access to secretsline 642
    [Credential-related source omitted]
  • Access to secretsline 643
    [Credential-related source omitted]

internal/auth/chain_resolver.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]

internal/auth/chain_resolver_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 112
    [Credential-related source omitted]
  • Access to secretsline 137
    [Credential-related source omitted]
  • Access to secretsline 162
    [Credential-related source omitted]

internal/auth/chain_typed_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 113
    [Credential-related source omitted]
  • Access to secretsline 159
    [Credential-related source omitted]
  • Access to secretsline 179
    [Credential-related source omitted]
  • Access to secretsline 190
    [Credential-related source omitted]

internal/auth/constants.go

  • Executable scriptline 1
    Executable file

internal/auth/credential.go

  • Executable scriptline 1
    Executable file

internal/auth/credentials_file.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 76
    [Credential-related source omitted]

internal/auth/env_resolver.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 7
    [Credential-related source omitted]
  • Access to secretsline 10
    [Credential-related source omitted]
  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]

internal/auth/env_resolver_test.go

  • Executable scriptline 1
    Executable file

internal/auth/file_resolver.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 144
    [Credential-related source omitted]
  • Access to secretsline 146
    [Credential-related source omitted]
  • Access to secretsline 209
    [Credential-related source omitted]
  • Access to secretsline 239
    [Credential-related source omitted]
  • Access to secretsline 269
    [Credential-related source omitted]
  • Access to secretsline 271
    [Credential-related source omitted]
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 277
    [Credential-related source omitted]
  • Access to secretsline 278
    [Credential-related source omitted]
  • Access to secretsline 312
    [Credential-related source omitted]

internal/auth/file_resolver_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 136
    [Credential-related source omitted]
  • Access to secretsline 152
    [Credential-related source omitted]
  • Access to secretsline 156
    [Credential-related source omitted]
  • Access to secretsline 183
    [Credential-related source omitted]
  • Access to secretsline 184
    [Credential-related source omitted]
  • Access to secretsline 187
    [Credential-related source omitted]
  • Access to secretsline 191
    [Credential-related source omitted]
  • Access to secretsline 199
    [Credential-related source omitted]
  • Access to secretsline 205
    [Credential-related source omitted]
  • Access to secretsline 206
    [Credential-related source omitted]
  • Access to secretsline 217
    [Credential-related source omitted]
  • Access to secretsline 223
    [Credential-related source omitted]
  • Access to secretsline 238
    [Credential-related source omitted]
  • Access to secretsline 242
    [Credential-related source omitted]
  • Access to secretsline 247
    [Credential-related source omitted]
  • Access to secretsline 251
    [Credential-related source omitted]
  • Access to secretsline 252
    [Credential-related source omitted]
  • Access to secretsline 254
    [Credential-related source omitted]
  • Access to secretsline 259
    [Credential-related source omitted]
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 279
    [Credential-related source omitted]
  • Access to secretsline 341
    [Credential-related source omitted]
  • Access to secretsline 369
    [Credential-related source omitted]
  • Access to secretsline 370
    [Credential-related source omitted]
  • Access to secretsline 382
    [Credential-related source omitted]
  • Access to secretsline 397
    [Credential-related source omitted]
  • Access to secretsline 398
    [Credential-related source omitted]
  • Network accessline 407
    [Credential-related source omitted]
  • Network accessline 409
    [Credential-related source omitted]
  • Access to secretsline 409
    [Credential-related source omitted]
  • Network accessline 425
    t.Fatalf("user.email = %v, want u@example.com", user["email"]) 	} 	if user["avatar_url"] != "https://cdn/x.png" {
  • Network accessline 426
    } 	if user["avatar_url"] != "https://cdn/x.png" { 		t.Fatalf("user.avatar_url not preserved: %v", user["avatar_url"])
  • Network accessline 427
    if user["avatar_url"] != "https://cdn/x.png" {

internal/auth/file_store.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 9
    [Credential-related source omitted]

internal/auth/file_store_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 100
    [Credential-related source omitted]
  • Access to secretsline 113
    [Credential-related source omitted]
  • Access to secretsline 125
    [Credential-related source omitted]
  • Access to secretsline 143
    [Credential-related source omitted]
  • Access to secretsline 162
    [Credential-related source omitted]
  • Access to secretsline 163
    [Credential-related source omitted]
  • Access to secretsline 173
    [Credential-related source omitted]
  • Access to secretsline 174
    [Credential-related source omitted]
  • Access to secretsline 191
    [Credential-related source omitted]
  • Access to secretsline 228
    [Credential-related source omitted]
  • Access to secretsline 250
    [Credential-related source omitted]
  • Access to secretsline 253
    [Credential-related source omitted]

internal/auth/not_configured.go

  • Executable scriptline 1
    Executable file

internal/auth/oauth/browser.go

  • Executable scriptline 1
    Executable file

internal/auth/oauth/browser_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 54
    if err := OpenBrowser("https://example.test/oauth/authorize?x=1"); err != nil {
  • Network accessline 55
    t.Fatalf("OpenBrowser: %v", err) 	} 	if called != "https://example.test/oauth/authorize?x=1" {
  • Network accessline 56
    } 	if called != "https://example.test/oauth/authorize?x=1" { 		t.Errorf("opener called with %q", called)
  • Network accessline 57
    if called != "https://example.test/oauth/authorize?x=1" {
  • Network accessline 75
    if err := OpenBrowser("https://example.test/x"); err != nil {
  • Network accessline 79
    t.Error("opener should not be called when stdin is non-TTY") 	} 	if !strings.Contains(buf.String(), "https://example.test/x") {
  • Network accessline 80
    } 	if !strings.Contains(buf.String(), "https://example.test/x") { 		t.Errorf("expected URL in print output, got %q", buf.String())
  • Network accessline 81
    if !strings.Contains(buf.String(), "https://example.test/x") {
  • Network accessline 94
    err := OpenBrowser("https://example.test/x")
  • Network accessline 96
    t.Fatal("expected opener error to surface") 	} 	if !strings.Contains(buf.String(), "https://example.test/x") {
  • Network accessline 97
    } 	if !strings.Contains(buf.String(), "https://example.test/x") { 		t.Errorf("expected fallback print, got %q", buf.String())
  • Network accessline 98
    if !strings.Contains(buf.String(), "https://example.test/x") {
  • Network accessline 117
    if err := OpenBrowser("https://example.test/x"); err != nil {
  • Network accessline 121
    t.Error("opener should not run when HEYGEN_NO_BROWSER=1") 	} 	if !strings.Contains(buf.String(), "https://example.test/x") {
  • Network accessline 122
    } 	if !strings.Contains(buf.String(), "https://example.test/x") { 		t.Errorf("expected URL in print, got %q", buf.String())
  • Network accessline 123
    if !strings.Contains(buf.String(), "https://example.test/x") {
  • Network accessline 139
    if err := OpenBrowser("https://example.test/x"); err != nil {
  • Network accessline 143
    t.Error("opener should not run when BROWSER=none") 	} 	if !strings.Contains(buf.String(), "https://example.test/x") {
  • Network accessline 144
    } 	if !strings.Contains(buf.String(), "https://example.test/x") { 		t.Errorf("expected URL in print, got %q", buf.String())
  • Network accessline 145
    if !strings.Contains(buf.String(), "https://example.test/x") {
  • Network accessline 162
    } 	t.Setenv("BROWSER", "firefox") 	cmd := platformOpenCmd("https://example.test/x")
  • Network accessline 163
    t.Setenv("BROWSER", "firefox") 	cmd := platformOpenCmd("https://example.test/x") 	if len(cmd.Args) < 2 || cmd.Args[0] != "firefox" || cmd.Args[1] != "https://example.test/x" {
  • Network accessline 164
    cmd := platformOpenCmd("https://example.test/x")
  • Network accessline 165
    if len(cmd.Args) < 2 || cmd.Args[0] != "firefox" || cmd.Args[1] != "https://example.test/x" {
  • Network accessline 177
    t.Setenv("BROWSER", "none") 	cmd := platformOpenCmd("https://example.test/x")
  • Network accessline 178
    cmd := platformOpenCmd("https://example.test/x")
  • Network accessline 187
    } 	t.Setenv("BROWSER", "") 	cmd := platformOpenCmd("https://example.test/x")
  • Network accessline 188
    t.Setenv("BROWSER", "") 	cmd := platformOpenCmd("https://example.test/x") 	if len(cmd.Args) < 1 || cmd.Args[0] != "xdg-open" {
  • Network accessline 189
    cmd := platformOpenCmd("https://example.test/x")

internal/auth/oauth/device.go

  • Executable scriptline 1
    Executable file

internal/auth/oauth/device_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 26
    "device_code":      "device-secret", 			"user_code":        "ABCD-EFGH", 			"verification_uri": "https://app.heygen.com/oauth/device",
  • Network accessline 27
    "user_code":        "ABCD-EFGH", 			"verification_uri": "https://app.heygen.com/oauth/device", 			"expires_in":       600,
  • Network accessline 28
    "verification_uri": "https://app.heygen.com/oauth/device",
  • Network accessline 41
    context.Background(), 		"openid profile", 		"https://api.heygen.com",
  • Network accessline 42
    "openid profile", 		"https://api.heygen.com", 	)
  • Network accessline 43
    "https://api.heygen.com",
  • Network accessline 48
    if got.Get("client_id") != "cli-id" || 		got.Get("scope") != "openid profile" || 		got.Get("resource") != "https://api.heygen.com" {
  • Network accessline 49
    got.Get("scope") != "openid profile" || 		got.Get("resource") != "https://api.heygen.com" { 		t.Fatalf("form = %#v", got)
  • Network accessline 50
    got.Get("resource") != "https://api.heygen.com" {
  • Network accessline 63
    "device_code":      "device-secret", 			"user_code":        "ABCD-EFGH", 			"verification_uri": "https://app.heygen.com/oauth/device",
  • Network accessline 64
    "user_code":        "ABCD-EFGH", 			"verification_uri": "https://app.heygen.com/oauth/device", 			"expires_in":       600,
  • Network accessline 65
    "verification_uri": "https://app.heygen.com/oauth/device",
  • Network accessline 88
    "device_code":      "device-secret", 			"user_code":        "ABCD-EFGH", 			"verification_uri": "http://attacker.example/oauth/device",
  • Network accessline 89
    "user_code":        "ABCD-EFGH", 			"verification_uri": "http://attacker.example/oauth/device", 			"expires_in":       600,
  • Network accessline 90
    "verification_uri": "http://attacker.example/oauth/device",
  • Network accessline 109
    "device_code":      "device-secret", 			"user_code":        "ABCD-\x1b[31mEFGH", 			"verification_uri": "https://app.heygen.com/oauth/device",
  • Network accessline 110
    "user_code":        "ABCD-\x1b[31mEFGH", 			"verification_uri": "https://app.heygen.com/oauth/device", 			"expires_in":       600,
  • Network accessline 111
    "verification_uri": "https://app.heygen.com/oauth/device",
  • Access to secretsline 149
    [Credential-related source omitted]
  • Access to secretsline 192
    [Credential-related source omitted]
  • Access to secretsline 229
    [Credential-related source omitted]

internal/auth/oauth/loopback.go

  • Executable scriptline 1
    Executable file
  • Network accessline 133
    } 	port := listener.Addr().(*net.TCPAddr).Port 	redirectURI := fmt.Sprintf("http://127.0.0.1:%d%s", port, redirectPath)
  • Network accessline 135
    redirectURI := fmt.Sprintf("http://127.0.0.1:%d%s", port, redirectPath)

internal/auth/oauth/loopback_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    t.Error("Port should be assigned") 	} 	if !strings.HasPrefix(lb.RedirectURI, "http://127.0.0.1:") {
  • Network accessline 26
    } 	if !strings.HasPrefix(lb.RedirectURI, "http://127.0.0.1:") { 		t.Errorf("RedirectURI = %q", lb.RedirectURI)
  • Network accessline 27
    if !strings.HasPrefix(lb.RedirectURI, "http://127.0.0.1:") {

internal/auth/oauth/oauth.go

  • Executable scriptline 1
    Executable file
  • Network accessline 31
    const ( 	DefaultAuthorizeURL           = "https://app.heygen.com/oauth/authorize"
  • Network accessline 32
    DefaultAuthorizeURL           = "https://app.heygen.com/oauth/authorize"
  • Network accessline 33
    DefaultDeviceAuthorizationURL = "https://api2.heygen.com/v1/oauth/device_authorization"
  • Network accessline 34
    DefaultTokenURL               = "https://api2.heygen.com/v1/oauth/token"
  • Network accessline 35
    DefaultRevokeURL              = "https://api2.heygen.com/v1/oauth/revoke"
  • Network accessline 57
    // HTTPClient is used for the token + revoke round trips. Defaults 	// to an http.Client with sensible timeouts.
  • Network accessline 58
    // to an http.Client with sensible timeouts.
  • Network accessline 59
    HTTPClient *http.Client
  • Network accessline 95
    // WithHTTPClient injects a custom *http.Client (required for httptest).
  • Network accessline 96
    func WithHTTPClient(hc *http.Client) Option {
  • Network accessline 118
    TokenURL:               DefaultTokenURL, 		RevokeURL:              DefaultRevokeURL, 		HTTPClient:             &http.Client{Timeout: DefaultExchangeTimeout},
  • Network accessline 119
    RevokeURL:              DefaultRevokeURL, 		HTTPClient:             &http.Client{Timeout: DefaultExchangeTimeout}, 		Now:                    time.Now,
  • Network accessline 120
    HTTPClient:             &http.Client{Timeout: DefaultExchangeTimeout},
  • Network accessline 395
    // classifyTransportErr distinguishes the caller giving up from the transport // failing. It reads ctx.Err() rather than inspecting err, because an // http.Client.Timeout error also satisfies errors.Is(err,
  • Network accessline 396
    // failing. It reads ctx.Err() rather than inspecting err, because an // http.Client.Timeout error also satisfies errors.Is(err, // context.DeadlineExceeded) while the caller's context is still live — matching
  • Network accessline 397
    // http.Client.Timeout error also satisfies errors.Is(err,
  • Network accessline 429
    // an agent-imposed deadline). Nothing is wrong upstream, which is why it is 	// separate from ErrTokenNetwork. Determined from ctx.Err(), never from the 	// returned error: an http.Client.Timeout error also satisfies
  • Network accessline 430
    // separate from ErrTokenNetwork. Determined from ctx.Err(), never from the 	// returned error: an http.Client.Timeout error also satisfies 	// errors.Is(err, context.DeadlineExceeded) even when the caller's context is
  • Network accessline 431
    // returned error: an http.Client.Timeout error also satisfies
  • Access to secretsline 460
    [Credential-related source omitted]
  • Access to secretsline 462
    [Credential-related source omitted]
  • Access to secretsline 465
    [Credential-related source omitted]

internal/auth/oauth/oauth_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 58
    return NewClient( 		WithClientID("test-client"), 		WithAuthorizeURL("https://example.test/oauth/authorize"),
  • Network accessline 59
    WithClientID("test-client"), 		WithAuthorizeURL("https://example.test/oauth/authorize"), 		WithTokenURL(f.server.URL+"/v1/oauth/token"),
  • Network accessline 60
    WithAuthorizeURL("https://example.test/oauth/authorize"),
  • Network accessline 69
    c := NewClient( 		WithClientID("test-client"), 		WithAuthorizeURL("https://example.test/oauth/authorize"),
  • Network accessline 70
    WithClientID("test-client"), 		WithAuthorizeURL("https://example.test/oauth/authorize"), 	)
  • Network accessline 71
    WithAuthorizeURL("https://example.test/oauth/authorize"),
  • Network accessline 72
    ) 	u, err := c.BuildAuthorizationURL("the-state", "the-challenge", "http://127.0.0.1:12345/cb", "") 	if err != nil {
  • Network accessline 73
    u, err := c.BuildAuthorizationURL("the-state", "the-challenge", "http://127.0.0.1:12345/cb", "")
  • Network accessline 86
    {"response_type", "code"}, 		{"client_id", "test-client"}, 		{"redirect_uri", "http://127.0.0.1:12345/cb"},
  • Network accessline 87
    {"client_id", "test-client"}, 		{"redirect_uri", "http://127.0.0.1:12345/cb"}, 		{"scope", DefaultScopes},
  • Network accessline 88
    {"redirect_uri", "http://127.0.0.1:12345/cb"},
  • Network accessline 101
    func TestBuildAuthorizationURL_HonorsExistingQuery(t *testing.T) { 	c := NewClient(WithAuthorizeURL("https://example.test/oauth/authorize?foo=bar"))
  • Network accessline 102
    c := NewClient(WithAuthorizeURL("https://example.test/oauth/authorize?foo=bar"))
  • Network accessline 103
    u, err := c.BuildAuthorizationURL("s", "c", "http://127.0.0.1/cb", "openid")
  • Network accessline 115
    func TestBuildAuthorizationURL_CustomScopeRespected(t *testing.T) { 	c := NewClient(WithAuthorizeURL("https://example.test/oauth/authorize"))
  • Network accessline 116
    c := NewClient(WithAuthorizeURL("https://example.test/oauth/authorize"))
  • Network accessline 117
    u, err := c.BuildAuthorizationURL("s", "c", "http://127.0.0.1/cb", "custom scope here")
  • Network accessline 127
    func TestBuildAuthorizationURL_RejectsEmptyArgs(t *testing.T) { 	c := NewClient(WithAuthorizeURL("https://example.test/oauth/authorize"))
  • Network accessline 128
    c := NewClient(WithAuthorizeURL("https://example.test/oauth/authorize"))
  • Network accessline 130
    name, state, challenge, redirect string 	}{ 		{"empty state", "", "c", "http://127.0.0.1/cb"},
  • Network accessline 131
    }{ 		{"empty state", "", "c", "http://127.0.0.1/cb"}, 		{"empty challenge", "s", "", "http://127.0.0.1/cb"},
  • Network accessline 132
    {"empty state", "", "c", "http://127.0.0.1/cb"},
  • Network accessline 133
    {"empty challenge", "s", "", "http://127.0.0.1/cb"},
  • Access to secretsline 150
    [Credential-related source omitted]
  • Network accessline 159
    tok, err := c.ExchangeAuthorizationCode(context.Background(), "the-code", "the-verifier", "http://127.0.0.1:8080/cb")
  • Access to secretsline 164
    [Credential-related source omitted]
  • Network accessline 178
    "grant_type":    "authorization_code", 		"code":          "the-code", 		"redirect_uri":  "http://127.0.0.1:8080/cb",
  • Network accessline 179
    "code":          "the-code", 		"redirect_uri":  "http://127.0.0.1:8080/cb", 		"client_id":     "test-client",
  • Network accessline 180
    "redirect_uri":  "http://127.0.0.1:8080/cb",
  • Network accessline 198
    _, err := c.ExchangeAuthorizationCode(context.Background(), "bad-code", "verifier", "http://127.0.0.1/cb")
  • Access to secretsline 222
    [Credential-related source omitted]
  • Access to secretsline 231
    [Credential-related source omitted]
  • Network accessline 284
    c := NewClient( 		WithClientID("test-client"), 		WithRevokeURL("http://127.0.0.1:1/v1/oauth/revoke"), // unroutable
  • Network accessline 285
    WithClientID("test-client"), 		WithRevokeURL("http://127.0.0.1:1/v1/oauth/revoke"), // unroutable 		WithHTTPClient(&http.Client{Timeout: 50 * time.Millisecond}),
  • Network accessline 286
    WithRevokeURL("http://127.0.0.1:1/v1/oauth/revoke"), // unroutable
  • Network accessline 287
    WithHTTPClient(&http.Client{Timeout: 50 * time.Millisecond}),
  • Access to secretsline 305
    [Credential-related source omitted]
  • Access to secretsline 307
    [Credential-related source omitted]
  • Network accessline 315
    } 			c := idp.client(t) 			_, err := c.ExchangeAuthorizationCode(context.Background(), "code", "verifier", "http://127.0.0.1/cb")
  • Network accessline 316
    c := idp.client(t) 			_, err := c.ExchangeAuthorizationCode(context.Background(), "code", "verifier", "http://127.0.0.1/cb") 			if err == nil {
  • Network accessline 317
    _, err := c.ExchangeAuthorizationCode(context.Background(), "code", "verifier", "http://127.0.0.1/cb")
  • Network accessline 329
    } 	c := idp.client(t) 	_, err := c.ExchangeAuthorizationCode(context.Background(), "code", "verifier", "http://127.0.0.1/cb")
  • Network accessline 330
    c := idp.client(t) 	_, err := c.ExchangeAuthorizationCode(context.Background(), "code", "verifier", "http://127.0.0.1/cb") 	if err == nil {
  • Network accessline 331
    _, err := c.ExchangeAuthorizationCode(context.Background(), "code", "verifier", "http://127.0.0.1/cb")
  • Access to secretsline 345
    [Credential-related source omitted]
  • Network accessline 352
    _, err := c.ExchangeAuthorizationCode(ctx, "code", "verifier", "http://127.0.0.1/cb")
  • Access to secretsline 484
    [Credential-related source omitted]
  • Network accessline 500
    _, err := c.ExchangeAuthorizationCode(context.Background(), "the-code", "the-verifier", "http://127.0.0.1:8080/cb")
  • Access to secretsline 521
    [Credential-related source omitted]
  • Network accessline 528
    _, err := c.ExchangeAuthorizationCode(ctx, "the-code", "the-verifier", "http://127.0.0.1:8080/cb")
  • Network accessline 542
    func TestPostTokenForm_UnreachableEndpointIsNetworkError(t *testing.T) { 	c := NewClient(WithTokenURL("http://127.0.0.1:1/v1/oauth/token"))
  • Network accessline 543
    c := NewClient(WithTokenURL("http://127.0.0.1:1/v1/oauth/token"))
  • Network accessline 545
    _, err := c.ExchangeAuthorizationCode(context.Background(), "the-code", "the-verifier", "http://127.0.0.1:8080/cb")
  • Network accessline 557
    // An http.Client.Timeout error satisfies errors.Is(err,
  • Network accessline 566
    } 	c := idp.client(t) 	c.HTTPClient = &http.Client{Timeout: 50 * time.Millisecond}
  • Network accessline 568
    c.HTTPClient = &http.Client{Timeout: 50 * time.Millisecond}
  • Network accessline 571
    _, err := c.ExchangeAuthorizationCode(context.Background(), "the-code", "the-verifier", "http://127.0.0.1:8080/cb")
  • Network accessline 588
    func TestPostTokenForm_UnbuildableRequest(t *testing.T) { 	c := NewClient(WithTokenURL("http://\x7f invalid/v1/oauth/token"))
  • Network accessline 589
    c := NewClient(WithTokenURL("http://\x7f invalid/v1/oauth/token"))
  • Network accessline 591
    _, err := c.ExchangeAuthorizationCode(context.Background(), "the-code", "the-verifier", "http://127.0.0.1:8080/cb")
  • Network accessline 616
    _, err := c.ExchangeAuthorizationCode(context.Background(), "the-code", "the-verifier", "http://127.0.0.1:8080/cb")
  • Access to secretsline 637
    [Credential-related source omitted]
  • Network accessline 647
    _, err := c.ExchangeAuthorizationCode(ctx, "the-code", "the-verifier", "http://127.0.0.1:8080/cb")

internal/auth/oauth/pkce.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 21
    [Credential-related source omitted]

internal/auth/oauth/pkce_test.go

  • Executable scriptline 1
    Executable file

internal/auth/oauth/tokens.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 20
    [Credential-related source omitted]

internal/auth/oauth/tokens_test.go

  • Executable scriptline 1
    Executable file

internal/auth/oauth_store.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 63
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 95
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 100
    [Credential-related source omitted]
  • Access to secretsline 146
    [Credential-related source omitted]
  • Access to secretsline 147
    [Credential-related source omitted]
  • Access to secretsline 177
    [Credential-related source omitted]
  • Access to secretsline 179
    [Credential-related source omitted]

internal/auth/resolver.go

  • Executable scriptline 1
    Executable file

internal/auth/store.go

  • Executable scriptline 1
    Executable file

internal/auth/user_store.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 116
    [Credential-related source omitted]

internal/auth/user_store_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 62
    [Credential-related source omitted]
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 148
    [Credential-related source omitted]
  • Access to secretsline 155
    [Credential-related source omitted]
  • Access to secretsline 156
    [Credential-related source omitted]
  • Access to secretsline 173
    [Credential-related source omitted]
  • Access to secretsline 181
    [Credential-related source omitted]
  • Access to secretsline 203
    [Credential-related source omitted]

internal/client/client.go

  • Executable scriptline 1
    Executable file
  • Network accessline 18
    const ( 	DefaultBaseURL   = "https://api.heygen.com"
  • Network accessline 19
    DefaultBaseURL   = "https://api.heygen.com"
  • Network accessline 37
    // Client wraps net/http.Client with HeyGen-specific behavior:
  • Network accessline 41
    type Client struct { 	httpClient   *http.Client
  • Network accessline 42
    httpClient   *http.Client
  • Network accessline 80
    // WithHTTPClient injects a custom http.Client (critical for httptest).
  • Network accessline 81
    func WithHTTPClient(hc *http.Client) Option {
  • Network accessline 153
    func NewWithCredential(cred auth.Credential, opts ...Option) *Client { 	c := &Client{ 		httpClient:     &http.Client{Timeout: DefaultTimeout},
  • Network accessline 154
    c := &Client{ 		httpClient:     &http.Client{Timeout: DefaultTimeout}, 		baseURL:        DefaultBaseURL,
  • Network accessline 155
    httpClient:     &http.Client{Timeout: DefaultTimeout},

internal/client/client_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 161
    func TestClient_WithHTTPClientPreservesTimeout(t *testing.T) { 	custom := &http.Client{
  • Network accessline 162
    custom := &http.Client{
  • Network accessline 180
    func TestClient_WithHTTPClientNoMutation(t *testing.T) { 	base := &stubTransport{} 	custom := &http.Client{
  • Network accessline 181
    base := &stubTransport{} 	custom := &http.Client{ 		Timeout:   5 * time.Second,
  • Network accessline 182
    custom := &http.Client{

internal/client/executor.go

  • Executable scriptline 1
    Executable file
  • Network accessline 233
    // upload no longer masquerades as a generic network_error on one path 		// and a timeout on the other. net.Error.Timeout() is the robust 		// detector: http.Client.Timeout's wrapped error does not reliably
  • Network accessline 234
    // and a timeout on the other. net.Error.Timeout() is the robust 		// detector: http.Client.Timeout's wrapped error does not reliably 		// satisfy errors.Is(context.DeadlineExceeded), which is why the old
  • Network accessline 235
    // detector: http.Client.Timeout's wrapped error does not reliably

internal/client/executor_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 990
    func TestParseErrorResponse_SurfacesParamAndDocURL(t *testing.T) { 	body := []byte(`{"error":{"code":"invalid_parameter","message":"bad value","param":"avatar_id","doc_url":"https://developers.heygen.com/docs/error-codes#invalid-parameter"}
  • Network accessline 991
    body := []byte(`{"error":{"code":"invalid_parameter","message":"bad value","param":"avatar_id","doc_url":"https://developers.heygen.com/docs/error-codes#invalid-parameter"}}`)
  • Network accessline 1021
    func TestExecute_ResponseBodyReadError_NetworkError(t *testing.T) { 	c := New("key", WithBaseURL("http://example.invalid"), WithHTTPClient(&http.Client{Transport: errBodyTransport{}}))
  • Network accessline 1022
    c := New("key", WithBaseURL("http://example.invalid"), WithHTTPClient(&http.Client{Transport: errBodyTransport{}}))

internal/client/oauth_transport_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 66
    [Credential-related source omitted]
  • Network accessline 93
    WithBaseURL(api.URL), 		WithHTTPClient(api.Client()), 		WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid/token"))),
  • Network accessline 94
    WithHTTPClient(api.Client()), 		WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid/token"))), 		WithOAuthPersister(&fakePersister{}),
  • Network accessline 95
    WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid/token"))),
  • Access to secretsline 208
    [Credential-related source omitted]
  • Network accessline 460
    WithMaxRetries(0), 		WithOAuthClient(oauth.NewClient( 			oauth.WithTokenURL("http://127.0.0.1:1"), // dead endpoint
  • Network accessline 461
    WithOAuthClient(oauth.NewClient( 			oauth.WithTokenURL("http://127.0.0.1:1"), // dead endpoint 		)),
  • Network accessline 462
    oauth.WithTokenURL("http://127.0.0.1:1"), // dead endpoint
  • Network accessline 542
    WithBaseURL(api.URL), 		WithHTTPClient(api.Client()), 		WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))),
  • Network accessline 543
    WithHTTPClient(api.Client()), 		WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))), 		WithOAuthPersister(&fakePersister{}),
  • Network accessline 544
    WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))),
  • Network accessline 617
    WithMaxRetries(0), 		WithOAuthClient(oauth.NewClient( 			oauth.WithTokenURL("http://127.0.0.1:1"), // dead IdP
  • Network accessline 618
    WithOAuthClient(oauth.NewClient( 			oauth.WithTokenURL("http://127.0.0.1:1"), // dead IdP 		)),
  • Network accessline 619
    oauth.WithTokenURL("http://127.0.0.1:1"), // dead IdP
  • Access to secretsline 711
    [Credential-related source omitted]
  • Access to secretsline 828
    [Credential-related source omitted]
  • Access to secretsline 844
    [Credential-related source omitted]
  • Network accessline 1018
    ExpiresAt: pinned.Add(10 * time.Second), 	}, 		WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))),
  • Network accessline 1019
    }, 		WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))), 		WithNow(func() time.Time { return pinned }),
  • Network accessline 1020
    WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))),
  • Network accessline 1032
    ExpiresAt:    pinned.Add(2 * time.Hour), 	}, 		WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))),
  • Network accessline 1033
    }, 		WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))), 		WithNow(func() time.Time { return pinned }),
  • Network accessline 1034
    WithOAuthClient(oauth.NewClient(oauth.WithTokenURL("http://example.invalid"))),

internal/client/retry.go

  • Executable scriptline 1
    Executable file
  • Network accessline 92
    // A tripped client timeout is not worth retrying: http.Client.Timeout is
  • Network accessline 93
    // a total-Do budget, so the context is already spent. Match on 		// net.Error.Timeout() as well as the context sentinels, because 		// http.Client.Timeout's wrapped error does not reliably satisfy
  • Network accessline 94
    // net.Error.Timeout() as well as the context sentinels, because 		// http.Client.Timeout's wrapped error does not reliably satisfy 		// errors.Is(context.DeadlineExceeded) — the same reason the executor's
  • Network accessline 95
    // http.Client.Timeout's wrapped error does not reliably satisfy

internal/client/retry_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 202
    c := New("key", 		WithHTTPClient(&http.Client{
  • Network accessline 203
    WithHTTPClient(&http.Client{
  • Network accessline 224
    func TestRetry_NetworkErrorNoRetry_POST(t *testing.T) { 	c := New("key", 		WithHTTPClient(&http.Client{
  • Network accessline 225
    c := New("key", 		WithHTTPClient(&http.Client{ 			Transport: &failOnceTransport{err: errors.New("temporary network error")},
  • Network accessline 226
    WithHTTPClient(&http.Client{
  • Network accessline 232
    req, _ := http.NewRequest(http.MethodPost, "http://example.invalid", strings.NewReader(`{"title":"demo"}`))
  • Network accessline 428
    func TestCloneRequestForRetry_PreservesURL(t *testing.T) { 	req, _ := http.NewRequest(http.MethodGet, "https://example.com/v1/videos?limit=1", nil)
  • Network accessline 429
    req, _ := http.NewRequest(http.MethodGet, "https://example.com/v1/videos?limit=1", nil)
  • Network accessline 435
    got, _ := url.Parse(cloned.URL.String()) 	if got.String() != "https://example.com/v1/videos?limit=1" {
  • Network accessline 436
    if got.String() != "https://example.com/v1/videos?limit=1" {

internal/command/hidden.go

  • Executable scriptline 1
    Executable file

internal/command/spec.go

  • Executable scriptline 1
    Executable file

internal/command/spec_test.go

  • Executable scriptline 1
    Executable file
  • Network accessline 270
    data := map[string]any{ 		"title": "From JSON", 		"video": map[string]any{"type": "url", "url": "https://example.com"},
  • Network accessline 271
    "title": "From JSON", 		"video": map[string]any{"type": "url", "url": "https://example.com"}, 	}
  • Network accessline 272
    "video": map[string]any{"type": "url", "url": "https://example.com"},

internal/config/config.go

  • Executable scriptline 1
    Executable file

internal/config/env_provider.go

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    DefaultBaseURL = "https://api.heygen.com"
  • Network accessline 24
    // BaseURL returns the API base URL. Reads HEYGEN_API_BASE if set (undocumented, // used by tests and internal dev only). Defaults to https://api.heygen.com.
  • Network accessline 25
    // used by tests and internal dev only). Defaults to https://api.heygen.com.

internal/config/env_provider_test.go

  • Executable scriptline 1
    Executable file

internal/config/file_provider.go

  • Executable scriptline 1
    Executable file

internal/config/file_provider_test.go

  • Executable scriptline 1
    Executable file

internal/config/layered_provider.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 3
    [Credential-related source omitted]

internal/config/layered_provider_test.go

  • Executable scriptline 1
    Executable file

internal/errors/api_error.go

  • Executable scriptline 1
    Executable file

internal/errors/codes.go

  • Executable scriptline 1
    Executable file

internal/errors/codes_test.go

  • Executable scriptline 1
    Executable file

internal/errors/errors.go

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    const APIKeySettingsURL = "https://app.heygen.com/settings?nav=API"

internal/errors/errors_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 317
    [Credential-related source omitted]
  • Access to secretsline 321
    [Credential-related source omitted]
  • Network accessline 334
    func TestFromAPIError_SurfacesDocURLAndParam(t *testing.T) { 	param := "avatar_id" 	docURL := "https://developers.heygen.com/docs/error-codes#invalid-parameter"
  • Network accessline 335
    param := "avatar_id" 	docURL := "https://developers.heygen.com/docs/error-codes#invalid-parameter" 	apiErr := &APIError{Code: "invalid_parameter", Message: "bad value", Param: &param, DocURL: &docURL}
  • Network accessline 336
    docURL := "https://developers.heygen.com/docs/error-codes#invalid-parameter"

internal/origin/origin.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 57
    [Credential-related source omitted]
  • Network accessline 97
    // Replit workspace. REPL_ID + REPLIT_USER are long-documented 	// (https://docs.replit.com/replit-workspace/configuring-the-environment).
  • Network accessline 98
    // (https://docs.replit.com/replit-workspace/configuring-the-environment).
  • Network accessline 100
    // Nous Research Hermes Agent — cli.py:50 sets HERMES_QUIET="1" 	// unconditionally at module load (https://github.com/NousResearch/hermes-agent).
  • Network accessline 101
    // unconditionally at module load (https://github.com/NousResearch/hermes-agent).
  • Network accessline 103
    // openclaw multi-channel AI gateway — propagates OPENCLAW_STATE_DIR / 	// OPENCLAW_CONFIG_PATH to every spawned CLI subprocess 	// (https://github.com/openclaw/openclaw).
  • Network accessline 105
    // (https://github.com/openclaw/openclaw).
  • Network accessline 107
    // Pi coding agent (https://pi.dev) — packages/coding-agent/src/cli.ts:13
  • Access to secretsline 131
    [Credential-related source omitted]

internal/origin/origin_test.go

  • Executable scriptline 1
    Executable file

internal/output/formatter.go

  • Executable scriptline 1
    Executable file

internal/output/human_formatter.go

  • Executable scriptline 1
    Executable file

internal/output/human_formatter_test.go

  • Executable scriptline 1
    Executable file
  • Access to secretsline 563
    [Credential-related source omitted]
  • Access to secretsline 566
    [Credential-related source omitted]
  • Access to secretsline 569
    [Credential-related source omitted]

internal/output/json_formatter.go

  • Executable scriptline 1
    Executable file

internal/output/json_formatter_test.go

  • Executable scriptline 1
    Executable file

internal/output/spinner.go

  • Executable scriptline 1
    Executable file

internal/output/spinner_test.go

  • Executable scriptline 1
    Executable file

internal/paths/paths.go

  • Executable scriptline 1
    Executable file

scripts/install.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 5
    CDN_BASE="${HEYGEN_CDN_BASE_URL:-https://static.heygen.ai/cli}"
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMPDIR"' EXIT
  • Network accessline 56
    if command -v curl >/dev/null 2>&1; then
  • Network accessline 57
    if [[ -n "$output" ]]; then       curl -fsSL "$url" -o "$output"     else
  • Network accessline 58
    curl -fsSL "$url" -o "$output"
  • Network accessline 59
    else       curl -fsSL "$url"     fi
  • Network accessline 60
    curl -fsSL "$url"
  • Network accessline 65
    if command -v wget >/dev/null 2>&1; then
  • Network accessline 66
    if [[ -n "$output" ]]; then       wget -q -O "$output" "$url"     else
  • Network accessline 67
    wget -q -O "$output" "$url"
  • Network accessline 68
    else       wget -q -O - "$url"     fi
  • Network accessline 69
    wget -q -O - "$url"
  • Network accessline 74
    fail "curl or wget required"
  • Network accessline 108
    latest_stable_tag() {   local version   if ! version="$(download "${CDN_BASE}/stable")"; then
  • Network accessline 109
    local version   if ! version="$(download "${CDN_BASE}/stable")"; then     fail "failed to resolve latest stable version from ${CDN_BASE}/stable"
  • Network accessline 110
    if ! version="$(download "${CDN_BASE}/stable")"; then
  • Network accessline 111
    fail "failed to resolve latest stable version from ${CDN_BASE}/stable"
  • Network accessline 126
    local asset_name="$2"   local checksums_name="$3"   local release_url="${CDN_BASE}/releases/${release_tag}"
  • Network accessline 128
    local release_url="${CDN_BASE}/releases/${release_tag}"
  • Network accessline 198
    log "Detected: ${os} ${arch}"   log "Installing heygen release tag '${release_tag}' from ${CDN_BASE}"
  • Network accessline 199
    log "Installing heygen release tag '${release_tag}' from ${CDN_BASE}"

scripts/release-surface.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 1 fact
Signal confidence: 499 facts

and 449 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativePath .claude/skills/changelog-cli.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.