> ## Documentation Index
> Fetch the complete documentation index at: https://tbd-6fc993ce-hypeship-scraperly-link.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Invoking

## Via API

You can invoke your app by making a `POST` request to Kernel's API or via the CLI. Both support passing a payload. **For automations and agents that take longer than 100 seconds, use [async invocations](/apps/invoke#asynchronous-invocations).**

<Info>Synchronous invocations time out after 100 seconds.</Info>

<CodeGroup>
  ```typescript Typescript/Javascript theme={null}
  import Kernel from '@onkernel/sdk';

  const kernel = new Kernel();

  const invocation = await kernel.invocations.create({
    action_name: 'analyze',
    app_name: 'my-app',
    version: '1.0.0',
  });

  console.log(invocation.id);
  ```

  ```python Python theme={null}
  from kernel import Kernel

  kernel = Kernel()
  invocation = kernel.invocations.create(
      action_name="analyze",
      app_name="my-app",
      version="1.0.0",
  )
  print(invocation.id)
  ```
</CodeGroup>

### Asynchronous invocations

For long running jobs, use asynchronous invocations to trigger Kernel actions without waiting for the result. You can then stream real-time [status updates](/apps/status#streaming-status-updates) for the result.

<Info>Asynchronous invocations time out after 15 minutes by default but can be configured to last up to 1 hour by setting the optional `async_timeout_seconds` parameter during invocation.</Info>

<CodeGroup>
  ```typescript Typescript/Javascript theme={null}
  import Kernel from '@onkernel/sdk';

  const kernel = new Kernel();

  const invocation = await kernel.invocations.create({
    async: true,
    action_name: 'analyze',
    app_name: 'my-app',
    version: '1.0.0',
  });

  console.log(invocation.id);
  ```

  ```python Python theme={null}
  from kernel import Kernel

  kernel = Kernel()
  invocation = kernel.invocations.create(
      action_name="analyze",
      app_name="my-app",
      version="1.0.0",
      async_=True,
  )
  print(invocation.id)
  ```
</CodeGroup>

## Via CLI

Invoke an app action immediately via the CLI:

```bash theme={null}
kernel invoke <app_name> <action_name>
```

### Payload parameter

`--payload` allows you to invoke the action with specified parameters. This enables your action to receive and handle dynamic inputs at runtime. For example:

<Info>
  Payloads are stringified JSON and have a maximum size of 4.5 MB.
</Info>

```bash theme={null}
kernel invoke <app_name> <action_name>
    --payload '{"tshirt_size": "small", "color": "black", "shipping_address": "2 Mint Plz, San Francisco CA 94103"}'
```

See [here](/apps/develop#parameters) to learn how to access the payload in your action method.

### Return values

If your action specifies a [return value](/apps/develop#return-values), the invocation returns its value once it completes. (The Kernel CLI uses asynchronous invocations under the hood)
