---
title: "Add photos to a property by URL"
method: POST
path: "/api/add_images_to_property"
tags: ["Properties"]
---

# Add photos to a property by URL

`POST /api/add_images_to_property`

## Request

- Base URL: `https://app.pedra.ai`
- URL: `https://app.pedra.ai/api/add_images_to_property`
- Auth: none required

Adds photos to a property by URL — the server fetches each URL and stores it (any public https image, or a small data: URI), then returns the stored img.pedra.ai URLs. Up to 20 per call. With type "360", adds 360° photos for a virtual tour (max 10 per call). Images stored from URLs count toward the daily upload limit (30/day free, 500/day paid); over it, 429 `upload_limit` and nothing is stored.

## Request body

- object
  - `apiKey` string, required: Account API key, sent in the request body. Get one at https://app.pedra.ai under Settings → API.
  - `propertyId` string, required
  - `imageUrls` string[], required: Image URLs (or data: URIs) to fetch and add — up to 20 per call, or 10 with type "360".
  - `names` string[]: Optional names, one per image in the same order as imageUrls (e.g. the original file names). Returned as `name` by list_property_images and as `source.name` when the photo is edited. Never drawn on the image. Defaults to "Image 1", "Image 2"...
  - `type` 'photo' | '360': "360" adds 360° photos for a virtual tour: each is checked to be equirectangular (2:1), stored like the app stores them (JPEG, 4096 px wide; 6144 px above 20 MB), max 80 MB each and max 10 per call. data: URIs are accepted, so local files can be sent base64-encoded (a few per call, under the 50 MB body limit).

## Response `200`

Photos added.

- object
  - `message` string
  - `propertyId` string
  - `added` object[]
    - `imageId` string
    - `url` string
    - `aspectRatio` number
    - `name` string
  - `failed` object[]
    - `url` string
    - `error` string
  - `appUrl` string
  - `type` '360': Present ("360") when 360° photos were added.

## Other responses

- `400`: Invalid request — bad or unreachable image URL, missing required field, or validation error.
- `404`: Missing, invalid, or revoked API key.
- `405`: Wrong HTTP method — all endpoints accept POST (credits also accepts GET).
- `429`: Daily limit reached. Nothing is stored.

---

[API](https://skmtc.dev/pedra/apis/pedra-api.md) · [All operations](https://skmtc.dev/pedra/apis/pedra-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pedra/apis/pedra-api/revisions/87b2e76912c8?raw)
