> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefused.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Call over REST

> One HTTP endpoint, for languages with no generated package.

Fused generates TypeScript and Python. If your service is written in something else — or you would rather not vendor a package at all — the Engine exposes one runtime REST route that runs the same execution.

```bash theme={null}
curl -X POST "$FUSED_ENGINE_URL/v1/apps/$VERSION_ID/executions" \
  -H "Authorization: Bearer $FUSED_SDK_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"operation":"issueUpdate","input":{"id":"ISS-42","state":"done"}}'
```

`$VERSION_ID` is the app version UUID that apply printed — not the SDK name, and not the family ID. Note the port: this is the Engine's **HTTP** address, not the gRPC one the generated client wants.

## The body

| Field                              | For                                                                                           |
| ---------------------------------- | --------------------------------------------------------------------------------------------- |
| `operation`                        | The operation ID                                                                              |
| `input`                            | The operation's parameters                                                                    |
| `selector`                         | One physical selector: `environment`, `end_user_ref`, `auth_type`, `auth_name`, `resource_id` |
| `targets` / `selectors`            | Unified only: which services to run, and a selector per service                               |
| `pagination` / `target_pagination` | `{"max_pages": n}`, physical and Unified respectively                                         |

<Warning>
  Unified execution **requires** an `Idempotency-Key` header and rejects the call with `idempotency_key_required` without one. Physical operations accept the header but do not insist on it. Either way, supply it at most once.
</Warning>

## No package required

This is the same execution the typed package makes, against the same immutable version. A version applied with [`generate: false`](/app/build-an-sdk#skip-the-package) publishes without building a package at all and is fully callable here.

To generate your own client from the contract:

```bash theme={null}
fused-cli sdk openapi support-sdk@1.1.0 --out ./support.openapi.yaml
```

## What you give up

The generated package is not just convenience — it carries typed errors, one shared gRPC channel, and broader transport limits. Over REST you handle status codes yourself, and the same 1 MiB document and 17 MiB Unified aggregate bounds apply as on the CLI path.

<Card title="Run an operation" icon="code" href="/app/run-an-operation">
  What the typed package gives you, if your language is one of the two.
</Card>
