---
title: "calicoctl create"
description: "Reference for the calicoctl create command in Calico Open Source, used to create resources from a manifest file."
product: "Calico Open Source"
version: "3.33 (latest)"
section: "Reference"
canonical_url: "https://docs.tigera.io/calico/latest/reference/calicoctl/create"
---

# calicoctl create

This sections describes the `calicoctl create` command.

Read the [calicoctl command line interface user reference](https://docs.tigera.io/calico/latest/reference/calicoctl/overview.md) for a full list of calicoctl commands.

> **SECONDARY:** The available actions for a specific resource type may be limited based on the datastore used for Calico (etcdv3 / Kubernetes API). Please refer to the [Resources section](https://docs.tigera.io/calico/latest/reference/resources/overview.md) for details about each resource type.

## Displaying the help text for 'calicoctl create' command

Run `calicoctl create --help` to display the following help menu for the command.

```text
Create one or more Calico resources from a file, directory, or stdin, in YAML
or JSON format. Use create when you want the command to fail if a resource
already exists; use apply if you'd rather create-or-update.

Usage:
  calicoctl create [flags]

Examples:
  # Create resources from a file.
  calicoctl create -f ./policy.yaml

  # Create resources from stdin.
  cat policy.json | calicoctl create -f -

Flags:
  -c, --config string      Path to the file containing connection configuration in YAML or JSON format. (default "/etc/calico/calicoctl.cfg")
  -f, --filename string    Filename to use to create/apply/replace/delete the resource. Use '-' for stdin.
  -h, --help               help for create
  -n, --namespace string   Namespace of the resource.
  -R, --recursive          Process the filename specified in -f recursively.
      --skip-empty         Do not error if files contain no data.
      --skip-exists        Skip over resources that already exist.

Global Flags:
      --allow-version-mismatch   Allow client and cluster versions mismatch
      --context string           The name of the kubeconfig context to use
  -l, --log-level string         Set the log level (panic, fatal, error, warn, info, debug) (default "panic")
```

### Examples

1. Create a set of resources (of mixed type) using the data in resources.yaml.

   ```bash
   calicoctl create -f ./resources.yaml
   ```

   Results indicate that 8 resources were successfully created.

   ```text
   Successfully created 8 resource(s)
   ```

2. Create the same set of resources reading from stdin.

   ```bash
   cat resources.yaml | calicoctl create -f -
   ```

   Results indicate failure because the first resource (in this case a Profile) already exists.

   ```text
   Failed to create any resources: resource already exists: Profile(name=profile1)
   ```

### Options

```text
  -f, --filename string    Filename to use to create/apply/replace/delete the resource. Use '-' for stdin.
      --skip-exists        Skip over resources that already exist.
  -n, --namespace string   Namespace of the resource.
```

### General options

```text
  -c, --config string      Path to the file containing connection configuration in YAML or JSON format. (default "/etc/calico/calicoctl.cfg")
```

## See also

- [Installing calicoctl](https://docs.tigera.io/calico/latest/operations/calicoctl/install.md)
- [Resources](https://docs.tigera.io/calico/latest/reference/resources/overview.md) for details on all valid resources, including file format and schema
- [NetworkPolicy](https://docs.tigera.io/calico/latest/reference/resources/networkpolicy.md) for details on the Calico selector-based policy model
