# Soul 2: Photorealistic Images, Reference Input, Price and API

> Create portraits and fashion images with Soul 2. Compare text and image inputs, batch sizes, resolutions and Raywake pricing.

Canonical: https://raywake.si/blog/soul-2-photorealistic-images
Last updated: 2026-10-31

Published: 2026-10-31 · Raywake

**Soul 2 generates realistic portraits and fashion images from text, and its image-to-image operation also accepts a reference image. Both operations offer 720p or 1080p and batches of 1 or 4 images. On Raywake, each image costs $0.01 at either resolution. The inputs include aspect ratio, prompt enhancement, style and custom-reference controls.**

Use [Soul 2 Text to Image](https://raywake.si/explore/soul-2) for a written scene or [Soul 2 Image to Image](https://raywake.si/explore/soul-2/image-to-image) when you have a source picture. The model is intended for realistic portraits, fashion and editorial styles. Check faces, fabrics and accessories before using a result. Prices and settings are as of 31 October 2026.

## Soul 2 at a glance

| Setting            | Both operations                         |
| ------------------ | --------------------------------------- |
| Required text      | `prompt`                                |
| Reference image    | `image_url` required for image to image |
| Resolution         | 720p or 1080p, default 720p             |
| Batch size         | 1 or 4, default 1                       |
| Aspect ratio       | 9:16, 16:9, 4:3, 3:4, 1:1, 2:3, 3:2     |
| Default shape      | 4:3                                     |
| Prompt enhancement | `enhance_prompt`, default true          |
| Image price        | $0.01 at either resolution              |

## How much does Soul 2 cost?

The image rate is the same for both operations and both listed resolutions. Batch size determines the simple totals below.

| Operation      | Resolution | 1 image | 4 images |
| -------------- | ---------- | ------: | -------: |
| Text to image  | 720p       |   $0.01 |    $0.04 |
| Text to image  | 1080p      |   $0.01 |    $0.04 |
| Image to image | 720p       |   $0.01 |    $0.04 |
| Image to image | 1080p      |   $0.01 |    $0.04 |

There is no listed price saving from choosing 720p instead of 1080p on Raywake. The resolution names are output options, not a promise of a particular width and height for every aspect ratio.

Start with a single output while deciding the subject and crop. A batch of four is useful when you want alternatives from a settled brief. The `batch_size` enum contains only 1 and 4, so values between them are not documented options.

## Should you start from text or a reference image?

Start from text when you want to explore a scene without an existing composition. Describe the person, clothing, lighting and setting in concrete terms. “Portrait beside a window, cream shirt, soft side light, dark background” gives you visible details to evaluate.

Start from an image when you already have visual material to guide the result. The image operation requires both `image_url` and `prompt`. Explain what you want to change and which parts matter, rather than assuming the model will infer the purpose of the reference.

A reference-input field does not establish exact identity preservation. Review the face, pose and garment details in the result against your intended use.

## Which controls should you set first?

Set the aspect ratio before adjusting minor visual details. A portrait crop and a wide editorial layout need different space around the subject. Both operations default to `4:3`, so specify `9:16` or another supported ratio when your layout needs it.

Prompt enhancement is on by default. If you are comparing two versions of your wording, hold `enhance_prompt` constant. Otherwise, you are changing both the prompt and how it is processed.

Use `style_id` only when you have a valid selection from Raywake. Leave it out rather than guessing an ID from a familiar style name.

There are also `custom_reference_id` and `custom_reference_strength` inputs. Strength ranges from 0 to 1 and defaults to 1.

## How to call Soul 2 through the API

The example quotes one image at 1080p with an explicit portrait ratio. All three code tabs use the same model and inputs.

**Quote this request**

cURL:

```bash
curl --fail-with-body https://api.raywake.com/v1/quotes \
  -H "Authorization: Bearer $RAYWAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"soul-2","input":{"prompt":"Editorial portrait beside a window, cream shirt, soft side light, dark background","resolution":"1080p","aspect_ratio":"3:4","batch_size":1}}'
```

Python:

```python
import os
import requests

payload = {'model': 'soul-2',
 'input': {'prompt': 'Editorial portrait beside a window, cream shirt, soft side '
                     'light, dark background',
           'resolution': '1080p',
           'aspect_ratio': '3:4',
           'batch_size': 1}}
response = requests.post(
    'https://api.raywake.com/v1/quotes',
    headers={'Authorization': f'Bearer {os.environ["RAYWAKE_API_KEY"]}'},
    json=payload, timeout=30,
)
response.raise_for_status()
print(response.json())
```

JavaScript:

```javascript
const payload = {
  "model": "soul-2",
  "input": {
    "prompt": "Editorial portrait beside a window, cream shirt, soft side light, dark background",
    "resolution": "1080p",
    "aspect_ratio": "3:4",
    "batch_size": 1
  }
};
const response = await fetch('https://api.raywake.com/v1/quotes', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.RAYWAKE_API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify(payload),
  signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`Quote failed: ${response.status}`);
console.log(await response.json());
```

To use the image operation, change the model ID to `soul-2/image-to-image` and add the required `image_url`. Keep the rest of your chosen settings explicit so the source picture is the main difference between requests.

The optional `seed` accepts integers from 1 to 1000000. Keep the seed with your request settings so you can track comparisons; changing the model or inputs may change the result. See the [quotes reference](https://raywake.si/docs/reference/quotes) for the quote workflow.

## How should you review a photorealistic result?

Check more than whether the overall mood looks photographic. Inspect eyes, fingers, garment seams and reflections at the size you intend to use. A small preview can hide a distracting detail that becomes obvious in a larger crop.

For fashion, compare the clothing silhouette and material with the brief. For an editorial portrait, check whether the lighting and expression support the story. Record specific changes for the next prompt, such as reducing background clutter or leaving space above the head, instead of asking for a vague quality increase.

## Common questions

### Does 1080p cost more than 720p?

No. Both are listed at $0.01 per image for both Soul 2 operations.

### Can I request two images in one batch?

The documented batch choices are 1 and 4. Two is not an available choice.

### Can Soul 2 use a reference photo?

Yes. The image-to-image operation requires a reference through `image_url` along with a prompt.

### What should I put in style_id?

Use a valid `style_id` from Raywake. If you have not selected one, omit the field rather than entering a style name as an ID.

[Create an image with Soul 2](https://raywake.si/dashboard)

## Related

- [Raywake Blog](https://raywake.si/blog)
