# Create job

The ees-sdk makes it easy to create jobs.

```typescript
const transactionReceipt: `0x${string}` = await eesSDK.createJob(jobSpecification, sponsor, sponsorSignature, hasSponsorship, index);
```

Here `jobSpecification` has type [`JobSpecification`](https://docs.ees.xyz/sdk/types). The `sponsor` field has type `` `0x{string}` `` and is the sponsor address of the job. The `sponsorSignature` has type `` `0x{string}` `` and is an EIP-712 signature of `jobSpecification` signed by the `sponsor`. Next, `hasSponsorship` has type boolean and is a flag that indicates whether the job should be created with a sponsorship. Finally, `index` is the index in the jobs array in which the job should be created. The function returns `transactionReceipt` of viem's type `TransactionReceipt` containing information about the transaction.

{% hint style="warning" %}
**Warning:** If `index < jobs.length`, the job will *reuse* an existing index in the array. This can only be done if the job at that index is cancelled, i.e. if the `owner` field is set to the zero address. Otherwise if `index >= jobs.length`, this operation will extend the `jobs` array. Reusing an index is cheaper gas wise but will revert if the index is not free.
{% endhint %}

{% hint style="info" %}
**Note:** If `hasSponsorship` is set to true, the `sponsor` and `sponsorSignature` will not be considered and arbitrary values can be given. The same is true for the `nonce` and `deadline` fields of the `jobSpecification` object.
{% endhint %}

{% hint style="warning" %}
**Warning:** This action will perform an on-chain transaction and requires that the eesSDK object was initialised with a wallet client.
{% endhint %}
