---
title: "calicoctl apply"
description: "Reference for the calicoctl apply command in Calico Open Source, used to create or update 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/apply"
---

# calicoctl apply

This sections describes the `calicoctl apply` 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 apply' command

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

```text
Create or update one or more Calico resources from a file, directory, or stdin,
in YAML or JSON format. Apply adds resources that don't exist yet and updates
those that do, so it's the right choice when you don't care whether the resource
is already present.

Usage:
  calicoctl apply [flags]

Examples:
  # Apply resources from a file.
  calicoctl apply -f ./policy.yaml

  # Apply resources from stdin.
  cat policy.json | calicoctl apply -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 apply
  -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.

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. Apply a set of resources (of mixed type) using the data in resources.yaml.

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

   Results indicate that 8 resources were successfully applied

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

2. Apply two policy resources based on the JSON passed into stdin.

   ```bash
   cat policy.json | calicoctl apply -f -
   ```

   Results indicate success.

   ```text
   Successfully applied 2 'policy' resource(s)
   ```

### Options

```text
  -f, --filename string    Filename to use to create/apply/replace/delete the resource. Use '-' for stdin.
  -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
