# Deploy a contract gaslessly

{% hint style="info" %}
An API key is required to use the infrastructure to power gasless transactions. Visit  <https://app.rallyprotocol.com/> to generate both Amoy and Mainnet Polygon API keys.&#x20;
{% endhint %}

## Deploy contracts with the relay method

To gaslessly deploy a contract, create a [GSN transaction object](https://github.com/rally-dfs/rly-network-mobile-sdk/blob/736e1de0859bec5230abba80e978f76f43fe2123/src/gsnClient/utils.ts#L16)  and use the `relay()` method to send the transaction to our relayer.

```dart
final gsnTx = GsnTransactionDetails(
    from: accountAddress,
    data: tx.data,
    value: "0",
    to: contractAddress,
    gas: gas.toString(),
    maxFeePerGas: maxFeePerGas.toString(),
    maxPriorityFeePerGas: maxPriorityFeePerGas.toString(),
    );

await amoy.relay(gsnTx)


// relay arbitrary tx through our gasless relayer. see complete Flutter example at
// https://github.com/rally-dfs/flutter-example-app/tree/main/app/lib/services/nft.dart
```
