# Photo Blender > Blend two photographs into one picture. Upload two images, choose what survives and what is > borrowed, read and edit the render brief, then render one composite. > https://photo-blender.skillsafe.ai/ ## What it actually does A blend here is **two runs with a human decision between them**, and the app shows you both: 1. **Read** — the app's own text model looks at both photographs (uploaded through `ss.files.upload()`, passed as `$files: [id, id]`) and writes a render brief describing the finished picture: what is kept from one, what is borrowed from the other. 2. **Render** — an image model paints that brief into one composite. It receives the brief and nothing else. The brief is visible and fully editable in between, so the expensive run is only ever spent on wording the person has read. ## The honest limitation, stated plainly **The image model never sees your photographs.** On this platform image-generation runs reject file attachments outright — `POST /v1/app-api/run` answers `400 validation_error: "This model generates images — $files attachments are not supported on image-generation runs"` — so the renderer works from the written brief alone. That means the result is a **new picture in the spirit of your two**, not a pixel-level montage of them. It is also why this app **cannot perform a face swap**: there is no path by which a photograph of a person reaches the renderer. Any tool claiming to blend two photographs on this platform is doing the same thing, whether or not it says so. ## Blend modes Each mode names both halves — what is kept, and what is borrowed. | Mode | Keeps | Lends | |---|---|---| | Palette and light | subject, arrangement, geometry, framing | colour, light direction, contrast, mood | | Style and medium | everything in the picture and where it sits | mark-making, surface, film or print character | | Material and texture | form, silhouette and pose | the substance that form is made of | | Setting | the subject, at the same scale and angle | the place, horizon and weather around it | | Merged subject | stance, scale and placement | anatomy, structure and surface | | Double exposure | silhouette and outer shape | everything visible inside that silhouette | Blend strength is subtle, balanced or strong. A free-text note outranks the mode where the two disagree. **Merged subject and double exposure are refused outright when the app sees a person in either photograph**, because those two modes become a face swap the moment a person is in frame. ## What it refuses, and where Four rules, enforced in the browser before any credit is reserved, and enforced twice — once on the assembled reader instruction, and again on the app's own composed brief before the render is paid for. The second gate exists because the app writes the render prompt itself, and a guard on user input structurally cannot see that. 1. Carrying one person's face, head or likeness onto another person or another person's body. 2. Picking out a specific real person — by name, role, description or relationship — and putting them in a place, an act or a company they were not in. 3. Sexual, intimate or undressed depiction, including making an uploaded subject more sexual than the photograph they arrived in. 4. Anything suggestive, romantic, undressed or aged-up around a subject who could read as a child, whether the age is stated or implied. ## What happens to an uploaded photograph Resized to **1280 px on the long edge** in the browser before anything is uploaded — typically a fifteen to thirty times reduction. The canvas re-encode also discards the EXIF block, so **GPS coordinates baked into a phone photograph never leave the machine**. EXIF rotation is baked into the pixels first, so portrait shots stay upright. The resized copies go to the user's own app storage and are displayed through short-lived signed URLs from `api.skillsafe.ai`, never as data URIs. Upload only pictures you have the rights to, depicting people who consented. ## Cost Two metered runs, both quoted as **reserves** before they are made. Settled charges on this platform vary several-fold against an identical reserve, so no fixed price is quoted anywhere in this app. The reading run reserves roughly 1,600 credits and the rendering run 2,652; both settle far below that. You only reach the second reserve after reading the brief the first produced. ## For developers `api.html` documents the whole path — token, `/me`, `/estimate`, both run legs, polling, and the marker contract the reader returns. Base URL `https://api.skillsafe.ai/v1/app-api`. The reader's reply is marker-delimited: `READ_A>>>`, `READ_B>>>`, `PEOPLE>>>`, a `BRIEF>>> … <<>>`. A reply cut off mid-brief still yields a usable brief; an absent or unparseable `PEOPLE` value resolves to `present`, the answer that keeps the mode gate closed. ## Not this Not a montage or compositing tool — it does not cut a subject out of one photograph and paste it into another. Not a face swapper. Not a background remover. Not a photo editor: it makes one new picture and does not modify the files you upload.