[Yandex Cloud documentation](../../../index.md) > [Yandex Serverless Integrations](../../index.md) > [Concepts](../index.md) > Workflows > Starting a workflow execution

# Workflow execution

An execution contains all information about a particular workflow run. Possible execution statuses: `In queue`, `In progress`, `Paused`, `Canceled`, `Error`, and `Executed`. Learn more about [possible error codes](#errors).

You can start a workflow in one of the following ways:

* Via the management console, CLI, or API. Read more in [Starting a workflow execution](../../operations/workflows/execution/start.md).
* On a timer. The schedule is set in [cron expression](../cron.md) format. Read more in [Scheduling a workflow to start on a timer](../../operations/workflows/execution/start-by-timer.md).
* Via a link over HTTPS. Read more in [Executing a workflow via a link](../../operations/workflows/execution/start-by-link.md).
* Using an API gateway. Read more in [Adding the x-yc-apigateway-integration:http extension for integration with Yandex Workflows](../../../api-gateway/operations/spec-constructor/workflows.md).
* Using Yandex EventRouter. To do this, you need to specify the workflow as a target in a [rule](../eventrouter/rule.md). For more on how to create a rule, see [Creating a rule with a Yandex Workflows target](../../operations/eventrouter/rule/create-workflows.md). The rule defines the events that should trigger a workflow. The event body is provided to the execution as an input parameter.

If a workflow is:
* Private, to run it, the user needs workflow execution permissions, e.g., the [serverless.workflows.executor](../../security/workflows.md#serverless-workflows-executor) role.
* Public, any user can run it. Read more in [Making a workflow public](../../operations/workflows/workflow/make-public.md).

## Possible error codes {#errors}

Error | Description
--- | ---
`ALL` | Error you can specify in a retry policy for the policy to apply to any error type other than `STEP_INTERNAL`.
`STEP_DATA_LIMIT_EXCEEDED` | Input or output data limit exceeded. Read more in [Quotas and limits in Serverless Integrations](../limits.md).
`STEP_NO_CHOICE_MATCHED` | There is no suitable execution path in `choices`. Read more in [Switch](yawl/management/switch.md).
`STEP_PERMISSION_DENIED` | No access to resource.
`STEP_TIMEOUT` | Step timeout exceeded. Read more in [Quotas and limits in Serverless Integrations](../limits.md).
`STEP_INVALID_OUTPUT` | Invalid output data.
`STEP_INTERNAL` | Internal error. If a step terminates with this error, you cannot apply the retry policy, and the execution immediately gets the `Error` status.
`STEP_INVALID_TEMPLATE_EXPRESSION` | Invalid jq template.
`STEP_FAIL` | The execution ended with an error at the `Fail` step. Read more in [Fail](yawl/management/fail.md).
`STEP_FAILED_PRECONDITION` | The resource state is invalid to complete the step, e.g., an email address is unverified or blocked.
`STEP_INVALID_ARGUMENT` | Invalid step parameters.
`STEP_QUOTA_EXCEEDED` | The resource request limit is reached.
`HTTP_CALL_400`<br/>`HTTP_CALL_401`<br/>`HTTP_CALL_402`<br/>`HTTP_CALL_403`<br/>`HTTP_CALL_404`<br/>`HTTP_CALL_405`<br/>`HTTP_CALL_406`<br/>`HTTP_CALL_407`<br/>`HTTP_CALL_408`<br/>`HTTP_CALL_409`<br/>`HTTP_CALL_410`<br/>`HTTP_CALL_411`<br/>`HTTP_CALL_412`<br/>`HTTP_CALL_413`<br/>`HTTP_CALL_414`<br/>`HTTP_CALL_415`<br/>`HTTP_CALL_416`<br/>`HTTP_CALL_417`<br/>`HTTP_CALL_418`<br/>`HTTP_CALL_419`<br/>`HTTP_CALL_420`<br/>`HTTP_CALL_421`<br/>`HTTP_CALL_422`<br/>`HTTP_CALL_423`<br/>`HTTP_CALL_424`<br/>`HTTP_CALL_425`<br/>`HTTP_CALL_426`<br/>`HTTP_CALL_427`<br/>`HTTP_CALL_428`<br/>`HTTP_CALL_429`<br/>`HTTP_CALL_431`<br/>`HTTP_CALL_449`<br/>`HTTP_CALL_451`<br/>`HTTP_CALL_499`<br/>`HTTP_CALL_500`<br/>`HTTP_CALL_501`<br/>`HTTP_CALL_505`<br/>`HTTP_CALL_502`<br/>`HTTP_CALL_503`<br/>`HTTP_CALL_504`<br/>`HTTP_CALL_506`<br/>`HTTP_CALL_507`<br/>`HTTP_CALL_508`<br/>`HTTP_CALL_509`<br/>`HTTP_CALL_510`<br/>`HTTP_CALL_511`<br/>`HTTP_CALL_520`<br/>`HTTP_CALL_521`<br/>`HTTP_CALL_522`<br/>`HTTP_CALL_523`<br/>`HTTP_CALL_524`<br/>`HTTP_CALL_525`<br/>`HTTP_CALL_526` | HTTP response state codes. For more information, see [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses).
`GRPC_CALL_CANCELLED`<br/>`GRPC_CALL_DEADLINE_EXCEEDED`<br/>`GRPC_CALL_UNIMPLEMENTED`<br/>`GRPC_CALL_UNAVAILABLE`<br/>`GRPC_CALL_UNKNOWN`<br/>`GRPC_CALL_INTERNAL`<br/>`GRPC_CALL_RESOURCE_EXHAUSTED`<br/>`GRPC_CALL_UNAUTHENTICATED` | gRPC statuses. For more information, see [this gRPC guide](https://grpc.github.io/grpc/core/md_doc_statuscodes.html).
`GRPC_CALL_INVALID_OPTIONS` | Invalid gRPC call parameters.
`GRPC_CALL_INVALID_REFLECTION_SERVER_RESPONSE` | Unexpected response from gRPC server.
`FUNCTION_CALL_INVALID_RESPONSE` | Invalid function code or format of returned JSON response. Read more in [Possible Cloud Functions response codes](../../../functions/concepts/function-invoke.md#http-state).
`CONTAINER_CALL_400`<br/>`CONTAINER_CALL_401`<br/>`CONTAINER_CALL_402`<br/>`CONTAINER_CALL_403`<br/>`CONTAINER_CALL_404`<br/>`CONTAINER_CALL_405`<br/>`CONTAINER_CALL_406`<br/>`CONTAINER_CALL_407`<br/>`CONTAINER_CALL_408`<br/>`CONTAINER_CALL_409`<br/>`CONTAINER_CALL_410`<br/>`CONTAINER_CALL_411`<br/>`CONTAINER_CALL_412`<br/>`CONTAINER_CALL_413`<br/>`CONTAINER_CALL_414`<br/>`CONTAINER_CALL_415`<br/>`CONTAINER_CALL_416`<br/>`CONTAINER_CALL_417`<br/>`CONTAINER_CALL_418`<br/>`CONTAINER_CALL_419`<br/>`CONTAINER_CALL_420`<br/>`CONTAINER_CALL_421`<br/>`CONTAINER_CALL_422`<br/>`CONTAINER_CALL_423`<br/>`CONTAINER_CALL_424`<br/>`CONTAINER_CALL_425`<br/>`CONTAINER_CALL_426`<br/>`CONTAINER_CALL_427`<br/>`CONTAINER_CALL_428`<br/>`CONTAINER_CALL_429`<br/>`CONTAINER_CALL_431`<br/>`CONTAINER_CALL_449`<br/>`CONTAINER_CALL_451`<br/>`CONTAINER_CALL_499`<br/>`CONTAINER_CALL_500`<br/>`CONTAINER_CALL_501`<br/>`CONTAINER_CALL_505`<br/>`CONTAINER_CALL_502`<br/>`CONTAINER_CALL_503`<br/>`CONTAINER_CALL_504`<br/>`CONTAINER_CALL_506`<br/>`CONTAINER_CALL_507`<br/>`CONTAINER_CALL_508`<br/>`CONTAINER_CALL_509`<br/>`CONTAINER_CALL_510`<br/>`CONTAINER_CALL_511`<br/>`CONTAINER_CALL_520`<br/>`CONTAINER_CALL_521`<br/>`CONTAINER_CALL_522`<br/>`CONTAINER_CALL_523`<br/>`CONTAINER_CALL_524`<br/>`CONTAINER_CALL_525`<br/>`CONTAINER_CALL_526` | HTTP response state codes. For more information, see [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses).
`YDB_CALL_SERVICE_UNAVAILABLE` | Temporary server-side failure.