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

# Submitting Print Jobs

> Submitting a print job sends your mail items for printing and shipping.

## Test Mode

Test mode print jobs are not charged for and are not actually sent out. Setting the `testmode` parameter to `true` creates a print job in test mode.

Test mode print jobs do not appear in the [Intelliprint Dashboard](https://dashboard.intelliprint.net) by default. You will have to switch to test mode with the top right mode selector to be able to list test mode print jobs. Similarly, to list test mode print jobs with the API, you will have to set the `testmode` parameter to `true`.

## Submitting a Print Job

Print jobs can be submitted at the time of creation or up to 30 days later. This is done by setting the `confirmed` parameter to `true`.

When you want to submit a print job depends on your use case:

* Automated workflows generally submit print jobs at the time of creation.
* Manual workflows generally create a print job, make several changes as updates, and then submit it once satisfied with the preview.

### Submitting at the Time of Creation

<CodeGroup>
  ```javascript Node.js SDK theme={null}
  import Intelliprint from 'intelliprint'

  const ip = new Intelliprint('your-api-key-here')

  const printJob = await ip.prints.create({
    type: 'letter',
    content: 'Hello World!\nThis is a letter!',
    recipients: [{
      address: {
        name: 'John Doe',
        line: '123 Main Street, Anytown, Anyplace',
        postcode: 'AB1 2CD',
        country: 'GB'
      }
    }],
    confirmed: true, // [!code ++]
    testmode: true, // Set to false to actually send the print job. Your account will be charged. // [!code ++]
  })
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.intelliprint.net/v1/prints \
    -H 'Authorization: YOUR_API_KEY' \
    -d 'type=letter' \
    -d 'content=Hello World!\nThis is a letter!' \
    -d 'recipients[0][address][name]=John Doe' \
    -d 'recipients[0][address][line]=123 Main Street, Anytown, Anyplace' \
    -d 'recipients[0][address][postcode]=AB1 2CD' \
    -d 'recipients[0][address][country]=GB' \
    -d 'confirmed=true' \
    -d 'testmode=true'
  # Set testmode to false to actually send the print job. Your account will be charged.
  ```
</CodeGroup>

### Submitting as an Update to a Print Job

<CodeGroup>
  ```javascript Node.js SDK theme={null}
  import Intelliprint from 'intelliprint'

  const ip = new Intelliprint('your-api-key-here')

  const printJob = await ip.prints.update('print-job-id', {
    confirmed: true, // [!code ++]
  })
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.intelliprint.net/v1/prints/print-job-id \
    -H 'Authorization: YOUR_API_KEY' \
    -d 'confirmed=true'
  ```
</CodeGroup>
