All skills
resend avatar

/resend-cli

@edbfece official
by resendresend/resend-skills193 stars
28

Operate the Resend platform from the terminal — send emails (including React Email .tsx templates via --react-email), manage domains, contacts, broadcasts, templates, webhooks, API keys, logs, automations, and events via the `resend` CLI. Use when the user wants to run Resend commands in the shell, scripts, or CI/CD pipelines, or send/preview React Email templates. Always load this skill before running `resend` commands — it contains the non-interactive flag contract and gotchas that prevent silent failures.

Use this Skill: https://skilld.dev/gh/resend/resend-skills/resend-cli

This session only. Nothing lands on disk.

referenceserror-codes.md

≈888 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Error Codes

All errors exit with code 1 and output JSON to stderr:

{"error":{"message":"Human-readable description","code":"error_code"}}

Authentication Errors

Code Cause Resolution
auth_error No API key found from any source Set RESEND_API_KEY env or run resend login
missing_key login called non-interactively without --key Pass --key "$RESEND_API_KEY" (from env/secret manager, never a literal)
invalid_key_format API key does not start with re_ Use a valid Resend API key starting with re_
validation_failed Resend API rejected the key during login Verify the key exists and is active at resend.com/api-keys

Email Errors

Code Cause Resolution
missing_body None of --text, --html, --html-file, or --react-email provided Provide at least one body flag
react_email_build_error Failed to bundle a React Email .tsx template with esbuild Check the template compiles; ensure react and one of react-email (6.0+), @react-email/components (5.x), or @react-email/render are installed in the project
react_email_render_error Bundled template failed during render() Check the component exports a default function and renders valid React Email markup
file_read_error Could not read file from a --file/--html-file/--text-file path Check file path exists and is readable
send_error Resend API rejected the send request Check from address is on a verified domain; check recipient is valid

Contact Import Errors

Code Cause Resolution
missing_file contacts imports create called non-interactively without --file Pass --file <path> to the CSV to import
invalid_column_map --column-map is not valid JSON, or is not an object Pass a JSON object mapping contact fields to CSV headers, e.g. {"email":"Email"}
invalid_topics --topics is not valid JSON, or is not an array Pass a JSON array of {id, subscription} objects
create_error Resend API rejected the import (e.g. CSV missing the required email column, or file over 100MB) Ensure the CSV has an email column (or map it with --column-map) and is under 100MB

Domain Errors

Code Cause Resolution
domain_error Domain creation, verification, or update failed Check domain name is valid; check DNS records are configured

General Errors

Code Cause Resolution
unexpected_error Unhandled exception Check CLI version with resend update; report at github.com/resend/resend-cli/issues
unknown Error without a specific code Inspect the message field for details

Troubleshooting

"No API key found" in CI

Ensure RESEND_API_KEY is set in the environment. The CLI does not prompt in non-TTY mode.

"Missing required flags" errors

In non-interactive mode (CI, piped, agent), ALL required flags must be provided. The CLI will not prompt.

Deletion commands fail without --yes

All delete/rm subcommands require --yes in non-interactive mode to prevent accidental deletion.

API rate limits

The Resend API has rate limits. If you hit them, the error message will indicate rate limiting. Add delays between batch operations.

Scheduled email errors

--scheduled-at must be a valid ISO 8601 datetime. The scheduled time must be in the future.

Source: SKILL.md on GitHub

1 warning1d4 checks · Risk SAFE
  • Gen Agent Trust Hub1d

    This skill provides a comprehensive CLI for managing the Resend email platform. It includes robust documentation on credential safety, preventing accidental API key exposure, and specifically warns agents about treating inbound email content as untrusted data. The skill is published by the official Resend team and uses standard development practices.

  • Socket1d

    No alerts

  • Snyk1d

    Risk: MEDIUM · 1 issue

  • ZeroLeaks5mo

    1 finding · Score: 82/100

Signed by skilld at edbfece. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 days ago.

Activeupdated 2 days ago
Other metadata
metadata
{
  "author": "resend",
  "version": "2.15.0",
  "homepage": "https://resend.com/docs/cli-agents",
  "source": "https://github.com/resend/resend-cli",
  "openclaw": {
    "primaryEnv": "RESEND_API_KEY",
    "requires": {
      "env": [
        "RESEND_API_KEY"
      ],
      "bins": [
        "resend"
      ]
    },
    "envVars": [
      {
        "name": "RESEND_API_KEY",
        "required": true,
        "description": "Resend API key for authenticating CLI commands"
      },
      {
        "name": "RESEND_PROFILE",
        "required": false,
        "description": "Named auth profile for multi-account setups"
      }
    ],
    "install": [
      {
        "kind": "node",
        "package": "resend-cli",
        "bins": [
          "resend"
        ],
        "label": "Resend CLI"
      }
    ],
    "links": {
      "repository": "https://github.com/resend/resend-cli",
      "documentation": "https://resend.com/docs/cli"
    }
  }
}
inputs
[
  {
    "name": "RESEND_API_KEY",
    "description": "Resend API key for authenticating CLI commands. Get yours at https://resend.com/api-keys",
    "required": true
  },
  {
    "name": "RESEND_PROFILE",
    "description": "Named auth profile for multi-account setups. Selects which stored API key to use (see `resend auth`).",
    "required": false
  }
]
references
[
  "references/emails.md",
  "references/domains.md",
  "references/api-keys.md",
  "references/automations.md",
  "references/broadcasts.md",
  "references/contacts.md",
  "references/contact-properties.md",
  "references/segments.md",
  "references/templates.md",
  "references/topics.md",
  "references/logs.md",
  "references/careers.md",
  "references/suppressions.md",
  "references/webhooks.md",
  "references/auth.md",
  "references/workflows.md",
  "references/error-codes.md"
]
  • CLI
  • resend
  • email
  • react-email
  • domains
  • broadcasts
  • contacts
  • automations
  • webhooks
  • ci-cd

README badge

README badge for resend/resend-skills/resend-cli

Operate the Resend email platform from the terminal—send emails via React Email templates, manage domains, contacts, broadcasts, templates, webhooks, API keys, and automations using the `resend` CLI. Targets shell scripts, CI/CD pipelines, and agent workflows that need programmatic email operations without interactive prompts.

Generated from the current SKILL.md.

Does this skill work in non-interactive environments like CI/CD?
Yes. The CLI auto-detects non-TTY and outputs JSON without prompting. Set RESEND_API_KEY in the environment, use --quiet to suppress spinners, and pass --yes on all delete commands.
Can I send React Email .tsx templates with this skill?
Yes. Use `resend emails send --react-email ./path/to/template.tsx` along with required flags like --from, --to, and --subject.
What authentication methods does the CLI support?
The CLI resolves auth via --api-key flag, RESEND_API_KEY environment variable, or a stored profile (resend login). Use RESEND_PROFILE or --profile for multi-account setups.
Does this skill support dry-run validation?
Only `emails send` and `broadcasts create` support --dry-run. They validate the payload and print the request without calling the API. Other commands like `emails batch` and `broadcasts send` do not support dry-run.
What happens if I forget --yes on a delete command?
The CLI exits with an error in non-interactive mode and does not prompt. All delete/rm subcommands require --yes when stdin is not a TTY.

Generated from the current SKILL.md. These answers refresh after source changes.