> ## Documentation index
> Fetch the complete documentation index at: https://upstash.com/docs/llms.txt
> Ask it with GET https://upstash.com/docs/ask?q=<keywords or question>. Short keywords rank best.
> Use these to discover all available pages before exploring further.
> Feature requests: https://upstash.com/docs/common/help/feature-requests.md lists what users asked for and how to vote for a request or add one.
> Page rating: `GET https://upstash.com/docs/feedback?path=/docs/redis/sdks/ts/commands/functions/call&helpful=true` (or `false`) records whether this page helped. An optional `comment` (URL-encoded, at most 500 characters) says what was missing or wrong. It is anonymous and needs no key. Comments hold no code, secrets or personal data.

# FCALL

> Invoke a function.

## Arguments

<ParamField body="function" type="string" required>
  The function name.
</ParamField>

<ParamField body="keys" type="string[]">
  The keys that the function accesses. 
  <Warning>
    The function can only read/write from the keys that are provided in the `keys` argument.
  </Warning>
</ParamField>

<ParamField body="args" type="string[]">
  The arguments for the function.
</ParamField>

## Response

<ResponseField type="unknown" required>
  The return value of the function.
</ResponseField>

<RequestExample>
```ts Basic
const code = `
#!lua name=mylib
redis.register_function('helloworld', 
  function()
    return 'Hello World!'
  end
)
`;

await redis.functions.load({ code, replace: true });

const res = await redis.functions.call("helloworld");
console.log(res); // "Hello World!"
```

```ts Advanced
const code = `
#!lua name=mylib

redis.register_function('my_hset',
  function (keys, args)
    local hash = keys[1]
    local time = redis.call('TIME')[1]
    return redis.call('HSET', hash, '_last_modified_', time, unpack(args))
  end
)
`;

await redis.functions.load({ code, replace: true });

const res = await redis.functions.call(
  "my_hset",
  ["myhash"],
  [
    "myfield",
    "some value",
    "another_field",
    "another value",
  ],
);
```
</RequestExample>
