# Observation tied to missing photo records cannot be retrieved properly by v2 API

**URL:** <https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030>\
**Category:** Bug Reports\
**Tags:** web\
**Created:** [February 23, 2026, 2:30pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030 "2026-02-23T14:30:22Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![einsum](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.inaturalist.org/einsum/32/57161_2.png) [@einsum](https://forum.inaturalist.org/u/einsum)\
**Post date:** [February 23, 2026, 2:30pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/1 "2026-02-23T14:30:22Z")

</div>

**Platform** : Web

**Browser** , if a website issue: Vivaldi but irrelevant

**URLs (aka web addresses) of any relevant observations or pages**:

[https://www.inaturalist.org/observations/identify?per\_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not\_in\_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon\_id=319384&place\_id=any](https://www.inaturalist.org/observations/identify?per_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not_in_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon_id=319384&place_id=any)

**Screenshots of what you are seeing** :

 ![image](https://us1.discourse-cdn.com/flex016/uploads/inaturalist/original/3X/3/8/38c624ac45232942cd9e0d2ead0c37f30648e255.png)

**Description of problem** :

Step 1: I chained `per_page` with a rectangle map boundary and `not_in_place` for a taxon and so no results from such identify mode - [https://www.inaturalist.org/observations/identify?per\_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not\_in\_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon\_id=319384&place\_id=any](https://www.inaturalist.org/observations/identify?per_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not_in_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon_id=319384&place_id=any)

Step 2: Interestingly, I do get results from same url when removing just `taxon_id` -

[https://www.inaturalist.org/observations/identify?per\_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not\_in\_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&place\_id=any](https://www.inaturalist.org/observations/identify?per_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not_in_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&place_id=any)

step 3: likewise, I also get results if removing only `per_page` too -

[https://www.inaturalist.org/observations/identify?place\_id=any&nelat=21.027425570491193&nelng=91.48025537114941&not\_in\_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon\_id=319384](https://www.inaturalist.org/observations/identify?place_id=any&nelat=21.027425570491193&nelng=91.48025537114941&not_in_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon_id=319384)

step 4: the browse mode displaying default 100 observations works fine anyway without per\_page filter for this goal but I like to use identify mode for this url job.

---

<div class="post-metadata">

**Author:** ![GeolTel](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.inaturalist.org/geoltel/32/76853_2.png) [@GeolTel](https://forum.inaturalist.org/u/GeolTel)\
**Post date:** [February 23, 2026, 2:48pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/2 "2026-02-23T14:48:31Z")

</div>

Strangely, it works if per\_page is \<65

---

<div class="post-metadata">

**Author:** ![einsum](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.inaturalist.org/einsum/32/57161_2.png) [@einsum](https://forum.inaturalist.org/u/einsum)\
**Post date:** [February 23, 2026, 2:54pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/3 "2026-02-23T14:54:07Z")

</div>

ohh same url? for me it worked until [52](https://www.inaturalist.org/observations/identify?per_page=52&nelat=21.027425570491193&nelng=91.48025537114941&not_in_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon_id=319384&place_id=any) - no results from [53](https://www.inaturalist.org/observations/identify?per_page=53&nelat=21.027425570491193&nelng=91.48025537114941&not_in_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon_id=319384&place_id=any) `in per_page`

its really odd bug then lol, I would love if anyone can identify the reason from inat public codebase or personal experiences?

---

<div class="post-metadata">

**Author:** ![pisum](https://avatars.discourse-cdn.com/v4/letter/p/91b2a8/32.png) [@pisum](https://forum.inaturalist.org/u/pisum)\
**Post date:** [February 23, 2026, 4:04pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/4 "2026-02-23T16:04:36Z")

</div>

> [@einsum](#):
>
> per\_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not\_in\_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon\_id=319384&place\_id=any

probably there’s bad data in this set. for example, the observation below seems to have null items in its `photos` array, which you wouldn’t think would be possible. the v2 API fails altogether when `photos` is included in the results, but the v1 API will show you the bad data.

- [https://www.inaturalist.org/observations/identify?id=336209968](https://www.inaturalist.org/observations/identify?id=336209968)
- [https://www.inaturalist.org/observations/336209968](https://www.inaturalist.org/observations/336209968)
- [https://api.inaturalist.org/v2/observations?id=336209968&fields=all](https://api.inaturalist.org/v2/observations?id=336209968&fields=all)
- [https://api.inaturalist.org/v1/observations?id=336209968](https://api.inaturalist.org/v1/observations?id=336209968)

comparing the `observation_photos` vs `photos`, it sort of looks like the observation is connected to photos that no longer exist (ex. [https://www.inaturalist.org/photos/601209232](https://www.inaturalist.org/photos/601209232)).

```auto
    "observation_photos": [
        {
          "id": 566637984,
          "position": 0,
          "uuid": "8bc42b9f-6712-42df-9c91-00fb0fccbeed",
          "photo_id": 601209232
        },
        {
          "id": 566637985,
          "position": 1,
          "uuid": "ac44d572-f2d2-4b63-9e9a-ee0f1f87284a",
          "photo_id": 601209245
        },
        {
          "id": 566637986,
          "position": 2,
          "uuid": "b0c19a8f-b272-4b5a-b76d-ef29f038f8a5",
          "photo_id": 601209251
        },
        {
          "id": 566637987,
          "position": 3,
          "uuid": "beac60a0-2087-4c00-beae-251e09d15416",
          "photo_id": 610916484,
          "photo": {
            "id": 610916484,
            "license_code": "cc-by-nc",
            "original_dimensions": {
              "width": 1274,
              "height": 1593
            },
            "url": "https://inaturalist-open-data.s3.amazonaws.com/photos/610916484/square.jpg",
            "attribution": "(c) Uriel Levy, some rights reserved (CC BY-NC)",
            "flags": [],
            "moderator_actions": [],
            "hidden": false
          }
        },
        {
          "id": 566637997,
          "position": 4,
          "uuid": "6455254e-45d5-48c4-b75f-0ad6ffe4b022",
          "photo_id": 610916488,
          "photo": {
            "id": 610916488,
            "license_code": "cc-by-nc",
            "original_dimensions": {
              "width": 1609,
              "height": 1287
            },
            "url": "https://inaturalist-open-data.s3.amazonaws.com/photos/610916488/square.jpg",
            "attribution": "(c) Uriel Levy, some rights reserved (CC BY-NC)",
            "flags": [],
            "moderator_actions": [],
            "hidden": false
          }
        }
      ],
      "photos": [null, null, null, {
          "id": 610916484,
          "license_code": "cc-by-nc",
          "original_dimensions": {
            "width": 1274,
            "height": 1593
          },
          "url": "https://inaturalist-open-data.s3.amazonaws.com/photos/610916484/square.jpg",
          "attribution": "(c) Uriel Levy, some rights reserved (CC BY-NC)",
          "flags": [],
          "moderator_actions": [],
          "hidden": false
        },
        {
          "id": 610916488,
          "license_code": "cc-by-nc",
          "original_dimensions": {
            "width": 1609,
            "height": 1287
          },
          "url": "https://inaturalist-open-data.s3.amazonaws.com/photos/610916488/square.jpg",
          "attribution": "(c) Uriel Levy, some rights reserved (CC BY-NC)",
          "flags": [],
          "moderator_actions": [],
          "hidden": false
        }
      ],

```

as a workaround for now, you might be able to get the other stuff in the Identify screen by adding `not_id=336209968` to your parameter list.

---

<div class="post-metadata">

**Author:** ![einsum](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.inaturalist.org/einsum/32/57161_2.png) [@einsum](https://forum.inaturalist.org/u/einsum)\
**Post date:** [February 23, 2026, 4:19pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/5 "2026-02-23T16:19:11Z")

</div>

> [@pisum](#):
>
> observation below seems to have null items in its `photos` array, which you wouldn’t think would be possible

ohh cool diagnosis! for some reason not\_id is also not chaining here - maybe bcoz of the order of flow of photos check failing before filters applying with not\_id on background? - [https://www.inaturalist.org/observations/identify?not\_id=336209968&per\_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not\_in\_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon\_id=319384&place\_id=any](https://www.inaturalist.org/observations/identify?not_id=336209968&per_page=100&nelat=21.027425570491193&nelng=91.48025537114941&not_in_place=6681&swlat=-4.319755102567338&swlng=62.91580224614941&taxon_id=319384&place_id=any)

I guess that 336209968 observation is the 53rd observation in the filtered sequence then (in my url), i cant move to second page with 52 per page but can move from 3rd page again and 100 per\_page too if skipping this by jumping to later pages.

---

<div class="post-metadata">

**Author:** ![pisum](https://avatars.discourse-cdn.com/v4/letter/p/91b2a8/32.png) [@pisum](https://forum.inaturalist.org/u/pisum)\
**Post date:** [February 23, 2026, 4:27pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/6 "2026-02-23T16:27:58Z")

</div>

> [@einsum](#):
>
> for some reason not\_id is also not chaining here

oh… yuck. the v2 API is expecting UUIDs in `not_id`. so then it would be `not_id=df9d9f4e-09b1-48a4-b2b2-48dab9ef7e22`. i would think that the v2 API probably should keep `not_id` functioning using the numeric obs ID, and create a separate `not_uuid` if they want to have that function on obs UUID.

---

<div class="post-metadata">

**Author:** ![einsum](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.inaturalist.org/einsum/32/57161_2.png) [@einsum](https://forum.inaturalist.org/u/einsum)\
**Post date:** [February 23, 2026, 4:31pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/7 "2026-02-23T16:31:15Z")

</div>

> [@pisum](#):
>
> v2 API is expecting UUIDs in `not_id`

Oof! Thanks again!

I think I faced that issue too once when I was using not\_id and it not filtering things although I havent bothered to figure out why as its just a rare filter in usage terms.

---

<div class="post-metadata">

**Author:** ![pisum](https://avatars.discourse-cdn.com/v4/letter/p/91b2a8/32.png) [@pisum](https://forum.inaturalist.org/u/pisum)\
**Post date:** [February 23, 2026, 4:40pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/8 "2026-02-23T16:40:08Z")

</div>

you or moderators may want to change the title to reflect what the underlying problem probably is – observation tied to missing photo records cannot be retrieved properly by v2 API, causes issues in observation detail screen, Explore, and Identify.

---

<div class="post-metadata">

**Author:** ![tiwane](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.inaturalist.org/tiwane/32/54612_2.png) [@tiwane](https://forum.inaturalist.org/u/tiwane)\
**Post date:** [February 23, 2026, 9:16pm UTC](https://forum.inaturalist.org/t/observation-tied-to-missing-photo-records-cannot-be-retrieved-properly-by-v2-api/76030/9 "2026-02-23T21:16:02Z")

</div>

Thanks, I made an issue for our engineers.
