# placedog.net

> Hand-picked placeholder photographs of dogs, at any size, with greyscale, sepia, blur and other effects, and with ids so the same dog can be used twice. Free and keyless.

App · Images & Design · 5 actions. Web page: https://docs.lodol.com/docs/integrations/placedog-net

## Actions

### Check service status

Check whether placedog.net is answering, and how quickly, without failing the step when it is not. Asks for the smallest image there is, so it costs almost nothing. Branch on 'ok' before building a page of placeholders that will not load. No API key required.

**Inputs**: None.

**Outputs**

- `latency_ms` (number)
- `message` (text)
- `ok` (true/false)
- `status_code` (number)

**Example output**

```json
{
  "latency_ms": 186.0,
  "message": null,
  "ok": true,
  "status_code": 200
}
```

### Get a dog photo

Get a placeholder photograph of a dog, at a size you choose and with an optional effect, as an address to drop into a mock-up or as a file to keep. Leave 'Save as a file' off and the step costs no request at all. No API key required.

**Inputs**

- Width (`width`, number): How wide the photograph should be, in pixels, from 1 to 1000. Defaults to 640. Anything larger is stopped here, because placedog.net does not refuse an oversized request: it quietly returns a 1000 pixel image instead. From 1 to 1000.
- Height (`height`, number): How tall the photograph should be, in pixels, from 1 to 1000. Leave it empty and the service fills it in from the chosen photograph's own proportions, which vary from picture to picture, so the height is not predictable. Give one when the slot has to be filled exactly. From 1 to 1000.
- Effect (`filter`, text): An effect to apply: blur, brightness, contrast, greyscale, invert, pixelate, sepia. The short forms the service uses are accepted too, so 'g' and 'greyscale' both work, as does 'grayscale'. Leave empty for no filter. A name the service does not recognise is refused here, because it would otherwise be ignored and return the unfiltered photograph with nothing to say so. One of: `blur`, `brightness`, `contrast`, `greyscale`, `invert`, `pixelate`, `sepia`.
- Force a fresh draw (`random`, true/false): Add the service's 'random' parameter, which stops the same address being served from cache. Useful when a page shows several placeholders at one size and you do not want the same dog in every slot.
- Save as a file (`save_as_file`, true/false): Download the photograph and keep it as a file. Leave this off and the step costs no request at all: it hands back the address, which is all a mock-up or an email template needs. Turn it on when the image has to survive the page it was put on.

**Outputs**

- `document_ref` (text)
- `documents` (list)
- `file_url` (text)
- `photo` (object)
- `saved` (true/false)
- `saved_as_file` (true/false)
- `size_bytes` (number)

**Example output**

```json
{
  "document_ref": "",
  "documents": [],
  "file_url": "",
  "photo": {
    "content_type": null,
    "filename": null,
    "filter": null,
    "height": 480,
    "height_is_exact": true,
    "image_id": null,
    "is_reproducible": false,
    "random": false,
    "url": "https://placedog.net/640/480",
    "width": 640
  },
  "saved": false,
  "saved_as_file": false,
  "size_bytes": 0
}
```

### Get a specific dog photo

Get one particular photograph by its id, at any size and with any effect. This is the only way to get the same dog twice: the id pins the photograph while width, height and effect stay free, so a mock-up can show the same animal at three sizes and a re-run produces the picture it produced last time. No API key required.

**Inputs**

- Photo ID (`image_id`, number, required): Which photograph to use, counting from 1. The collection currently runs to a couple of hundred and grows, so no ceiling is enforced here: the service answers its own clear message for an id it does not have. At least 1.
- Width (`width`, number): How wide the photograph should be, in pixels, from 1 to 1000. Defaults to 640. Anything larger is stopped here, because placedog.net does not refuse an oversized request: it quietly returns a 1000 pixel image instead. From 1 to 1000.
- Height (`height`, number): How tall the photograph should be, in pixels, from 1 to 1000. Leave it empty and the service fills it in from the chosen photograph's own proportions, which vary from picture to picture, so the height is not predictable. Give one when the slot has to be filled exactly. From 1 to 1000.
- Effect (`filter`, text): An effect to apply: blur, brightness, contrast, greyscale, invert, pixelate, sepia. The short forms the service uses are accepted too, so 'g' and 'greyscale' both work, as does 'grayscale'. Leave empty for no filter. A name the service does not recognise is refused here, because it would otherwise be ignored and return the unfiltered photograph with nothing to say so. One of: `blur`, `brightness`, `contrast`, `greyscale`, `invert`, `pixelate`, `sepia`.
- Save as a file (`save_as_file`, true/false): Download the photograph and keep it as a file. Leave this off and the step costs no request at all: it hands back the address, which is all a mock-up or an email template needs. Turn it on when the image has to survive the page it was put on.

**Outputs**

- `document_ref` (text)
- `documents` (list)
- `file_url` (text)
- `photo` (object)
- `saved` (true/false)
- `saved_as_file` (true/false)
- `size_bytes` (number)

**Example output**

```json
{
  "document_ref": "",
  "documents": [],
  "file_url": "",
  "photo": {
    "content_type": null,
    "filename": null,
    "filter": "sepia",
    "height": 300,
    "height_is_exact": true,
    "image_id": 5,
    "is_reproducible": true,
    "random": false,
    "url": "https://placedog.net/400/300/s?id=5",
    "width": 400
  },
  "saved": false,
  "saved_as_file": false,
  "size_bytes": 0
}
```

### Get several dog photos

Get several placeholder addresses at once, for a gallery or a mock-up grid. Addresses only, so this costs no requests. Each one carries the service's 'random' parameter, which is what stops the browser showing the same cached dog in every tile. No API key required.

**Inputs**

- How many (`count`, number): How many addresses to hand back, from 1 to 20. Defaults to 3. From 1 to 20.
- Width (`width`, number): How wide the photograph should be, in pixels, from 1 to 1000. Defaults to 640. Anything larger is stopped here, because placedog.net does not refuse an oversized request: it quietly returns a 1000 pixel image instead. From 1 to 1000.
- Height (`height`, number): How tall the photograph should be, in pixels, from 1 to 1000. Leave it empty and the service fills it in from the chosen photograph's own proportions, which vary from picture to picture, so the height is not predictable. Give one when the slot has to be filled exactly. From 1 to 1000.
- Effect (`filter`, text): An effect to apply: blur, brightness, contrast, greyscale, invert, pixelate, sepia. The short forms the service uses are accepted too, so 'g' and 'greyscale' both work, as does 'grayscale'. Leave empty for no filter. A name the service does not recognise is refused here, because it would otherwise be ignored and return the unfiltered photograph with nothing to say so. One of: `blur`, `brightness`, `contrast`, `greyscale`, `invert`, `pixelate`, `sepia`.

**Outputs**

- `filter` (text)
- `height` (number)
- `photo_count` (number)
- `photos` (list)
- `width` (number)

**Example output**

```json
{
  "filter": null,
  "height": 150,
  "photo_count": 1,
  "photos": [
    {
      "content_type": null,
      "filename": null,
      "filter": null,
      "height": 480,
      "height_is_exact": true,
      "image_id": null,
      "is_reproducible": false,
      "random": true,
      "url": "https://placedog.net/200/150?random",
      "width": 640
    }
  ],
  "width": 200
}
```

### List the effects

List the effects placedog.net offers, with the short forms it accepts and an example address for each. No request is made: these are fixed by the service. Worth knowing because an effect the service does not recognise is ignored rather than refused, so a misspelling quietly returns an unfiltered photograph. No API key required.

**Inputs**: None.

**Outputs**

- `accepted_spellings` (list)
- `filter_count` (number)
- `filters` (list)

**Example output**

```json
{
  "accepted_spellings": [
    "b",
    "blur",
    "g",
    "greyscale",
    "s",
    "sepia"
  ],
  "filter_count": 7,
  "filters": [
    {
      "example_url": "https://placedog.net/500/280/s",
      "name": "sepia",
      "short_form": "s"
    }
  ]
}
```
