---
title: "Read token image state, open proposals, and current sourcing suppression"
method: GET
path: "/v3/changes/targets/token-images/{chainId}/{address}"
tags: ["Images"]
---

# Read token image state, open proposals, and current sourcing suppression

`GET /v3/changes/targets/token-images/{chainId}/{address}`

## Request

- Base URL: `https://v3.euler.finance`
- URL: `https://v3.euler.finance/v3/changes/targets/token-images/{chainId}/{address}`
- Auth: API key in header `X-API-Key`

Requires `token-images:read` or an allowlisted Toolbox session. The open proposals (oldest first, at most 50) and the applied removal or dismissal that suppresses automatic sourcing are change records, as on every change route. API-key responses omit operator attribution from the provenance and the records.

## Path parameters

- `chainId` integer, required
- `address` string, required

## Response `200`

Current digest, provenance, open proposals, and applied removal or dismissal

- object
  - `data` TokenImageTarget, required
    - `chainId` integer, required
    - `address` string, required
    - `token` object, required
      - `id` string, required
      - `symbol` string, required
      - `name` string, required
    - `hasLogo` boolean, required
    - `sha256` string, nullable, required: The current managed image digest; send it as `expectedVersion`.
    - `provenance` object, nullable, required
      - `sourceUrl` string, nullable
      - `sourceRepository` string, nullable
      - `updatedBy` string, nullable: Omitted for API keys.
      - `proposedBy` ChangeActorRef: Who did it. API-key readers see only their own key's ID; every other actor is shown by kind with a null ID and label.
        - `kind` 'api-key' | 'platform-admin' | 'admin-secret' | 'system' | 'entity-admin', required
        - `id` string, nullable, required
        - `label` string, nullable, required: The platform admin's email or the key's name; null for API-key readers.
    - `proposals` ChangeRecord[], required
      - `id` string, uuid, required
      - `domain` string, required
      - `operation` string, required
      - `opClass` 'fill' | 'add' | 'replace' | 'update' | 'remove' | 'enable' | 'disable' | 'tighten' | 'loosen' | 'dismiss' | 'resume' | 'revert', nullable, required: What the change does, computed by the server. Geo changes are `tighten` (more people or assets fall under a rule), `loosen` (fewer, including any change that loosens one part) or `update` (nothing anyone is subject to changes, for example the reason).
      - `targetKey` string, required
      - `status` 'proposed' | 'applied' | 'rejected' | 'superseded' | 'reverted' | 'withdrawn' | 'failed' | 'expired', required
      - `reason` string, required
      - `rationale` string, nullable
      - `value` unknown, required
      - `before` unknown, required
      - `appliedValue` unknown, required
      - `checks` ChangeCheck[], required
        - `id` string, required
        - `outcome` 'pass' | 'fail' | 'warn' | 'skip', required
        - `message` string, required
        - `details` object, nullable
      - `policy` ChangePolicyResult, required
        - `version` string, required
        - `decision` 'apply' | 'propose', nullable, required: Null on rows recorded before the generic policy existed.
        - `reasons` string[], required
      - `evidence` object, nullable
      - `actor` ChangeActorRef, required: Who did it. API-key readers see only their own key's ID; every other actor is shown by kind with a null ID and label.
        - `kind` 'api-key' | 'platform-admin' | 'admin-secret' | 'system' | 'entity-admin', required
        - `id` string, nullable, required
        - `label` string, nullable, required: The platform admin's email or the key's name; null for API-key readers.
      - `decision` object, nullable, required
        - `actor` ChangeActorRef, required: Who did it. API-key readers see only their own key's ID; every other actor is shown by kind with a null ID and label.
          - `kind` 'api-key' | 'platform-admin' | 'admin-secret' | 'system' | 'entity-admin', required
          - `id` string, nullable, required
          - `label` string, nullable, required: The platform admin's email or the key's name; null for API-key readers.
        - `at` string, date-time, required
        - `comment` string, nullable, required
      - `expectedVersion` string, nullable
      - `resultingVersion` string, nullable
      - `revertsChangeId` string, uuid, nullable
      - `supersededByChangeId` string, uuid, nullable
      - `expiresAt` string, date-time, nullable
      - `error` object, nullable
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `uploadId` string, uuid, nullable: Token images only: the staged upload the change carries.
      - `sourceProvider` string, nullable: Token images only: `coingecko`, `pendle` or `pendle-pt-ring`; null for an upload.
      - `sourceUrl` string, nullable: Token images only.
      - `sourceEvidence` object, nullable: Token images only: the provider record or the derivation the image came from.
      - `events` ChangeEvent[]: Present on the detail read only, oldest first.
        - `id` string, uuid, required
        - `event` 'submitted' | 'approved' | 'rejected' | 'withdrawn' | 'superseded' | 'reverted' | 'failed' | 'expired', required
        - `status` 'proposed' | 'applied' | 'rejected' | 'superseded' | 'reverted' | 'withdrawn' | 'failed' | 'expired', required
        - `actor` ChangeActorRef, required: Who did it. API-key readers see only their own key's ID; every other actor is shown by kind with a null ID and label.
          - `kind` 'api-key' | 'platform-admin' | 'admin-secret' | 'system' | 'entity-admin', required
          - `id` string, nullable, required
          - `label` string, nullable, required: The platform admin's email or the key's name; null for API-key readers.
        - `details` object, nullable: What the event recorded. An API-key reader sees only `decision`, `stale`, `kind`, `reason`, `comment` and the related change ids, plus `error` as the generic `{ message: 'The change could not be applied' }`, as on the change itself.
        - `createdAt` string, date-time, required
    - `suppression` ChangeRecord, required: One change in any data domain, with its full record.
      - `id` string, uuid, required
      - `domain` string, required
      - `operation` string, required
      - `opClass` 'fill' | 'add' | 'replace' | 'update' | 'remove' | 'enable' | 'disable' | 'tighten' | 'loosen' | 'dismiss' | 'resume' | 'revert', nullable, required: What the change does, computed by the server. Geo changes are `tighten` (more people or assets fall under a rule), `loosen` (fewer, including any change that loosens one part) or `update` (nothing anyone is subject to changes, for example the reason).
      - `targetKey` string, required
      - `status` 'proposed' | 'applied' | 'rejected' | 'superseded' | 'reverted' | 'withdrawn' | 'failed' | 'expired', required
      - `reason` string, required
      - `rationale` string, nullable
      - `value` unknown, required
      - `before` unknown, required
      - `appliedValue` unknown, required
      - `checks` ChangeCheck[], required
        - `id` string, required
        - `outcome` 'pass' | 'fail' | 'warn' | 'skip', required
        - `message` string, required
        - `details` object, nullable
      - `policy` ChangePolicyResult, required
        - `version` string, required
        - `decision` 'apply' | 'propose', nullable, required: Null on rows recorded before the generic policy existed.
        - `reasons` string[], required
      - `evidence` object, nullable
      - `actor` ChangeActorRef, required: Who did it. API-key readers see only their own key's ID; every other actor is shown by kind with a null ID and label.
        - `kind` 'api-key' | 'platform-admin' | 'admin-secret' | 'system' | 'entity-admin', required
        - `id` string, nullable, required
        - `label` string, nullable, required: The platform admin's email or the key's name; null for API-key readers.
      - `decision` object, nullable, required
        - `actor` ChangeActorRef, required: Who did it. API-key readers see only their own key's ID; every other actor is shown by kind with a null ID and label.
          - `kind` 'api-key' | 'platform-admin' | 'admin-secret' | 'system' | 'entity-admin', required
          - `id` string, nullable, required
          - `label` string, nullable, required: The platform admin's email or the key's name; null for API-key readers.
        - `at` string, date-time, required
        - `comment` string, nullable, required
      - `expectedVersion` string, nullable
      - `resultingVersion` string, nullable
      - `revertsChangeId` string, uuid, nullable
      - `supersededByChangeId` string, uuid, nullable
      - `expiresAt` string, date-time, nullable
      - `error` object, nullable
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `uploadId` string, uuid, nullable: Token images only: the staged upload the change carries.
      - `sourceProvider` string, nullable: Token images only: `coingecko`, `pendle` or `pendle-pt-ring`; null for an upload.
      - `sourceUrl` string, nullable: Token images only.
      - `sourceEvidence` object, nullable: Token images only: the provider record or the derivation the image came from.
      - `events` ChangeEvent[]: Present on the detail read only, oldest first.
        - `id` string, uuid, required
        - `event` 'submitted' | 'approved' | 'rejected' | 'withdrawn' | 'superseded' | 'reverted' | 'failed' | 'expired', required
        - `status` 'proposed' | 'applied' | 'rejected' | 'superseded' | 'reverted' | 'withdrawn' | 'failed' | 'expired', required
        - `actor` ChangeActorRef, required: Who did it. API-key readers see only their own key's ID; every other actor is shown by kind with a null ID and label.
          - `kind` 'api-key' | 'platform-admin' | 'admin-secret' | 'system' | 'entity-admin', required
          - `id` string, nullable, required
          - `label` string, nullable, required: The platform admin's email or the key's name; null for API-key readers.
        - `details` object, nullable: What the event recorded. An API-key reader sees only `decision`, `stale`, `kind`, `reason`, `comment` and the related change ids, plus `error` as the generic `{ message: 'The change could not be applied' }`, as on the change itself.
        - `createdAt` string, date-time, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `503`: Service unavailable

## Changes

- **2026-10-30** `e987d7695ec1`: 1 info
  - added the optional property `data/provenance/proposedBy` to the response with the `200` status
- **2026-10-09** `1b550dddfa46`: 1 info
  - added the required property `data` to the response with the `200` status
- **2026-10-05** `875b105fe12a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/euler/apis/euler-data-api-v3/changes/v3/changes/targets/token-images/:chainId/:address/get.md)

---

[API](https://skmtc.dev/euler/apis/euler-data-api-v3.md) - [All operations](https://skmtc.dev/euler/apis/euler-data-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/euler/apis/euler-data-api-v3/revisions/e987d7695ec1?raw)
