Why are asset attributes missing from Imgix Management API?

60 views Asked by At

I am querying the Imgix Management API with no issue. I can retrieve an individual asset and a list of assets. However, most of the data properties are null. It looks like this:

{
  "data": {
    "attributes": {
      "analyzed_content_warnings": null,
      "analyzed_faces": null,
      "analyzed_tags": null,
      "categories": null,
      "color_model": null,
      "color_profile": null,
      "colors": null,
      "content_type": "image/jpeg",
      "custom_fields": null,
      "date_created": 1667935028,
      "date_modified": null,
      "description": null,
      "dpi_height": null,
      "dpi_width": null,
      "face_count": null,
      "file_size": 1016205,
      "has_frames": null,
      "media_height": null,
      "media_kind": "IMAGE",
      "media_width": null,
      "name": null,
      "origin_path": "/test/roses.jpeg",
      "source_id": "XXXXXXXXXXXXXXXXXXXX",
      "tags": null,
      "uploaded_by": null,
      "uploaded_by_api": false,
      "warning_adult": null,
      "warning_medical": null,
      "warning_racy": null,
      "warning_spoof": null,
      "warning_violence": null
    },
    "id": "XXXXXXXXXXXXXXXXXXX/test/roses.jpeg",
    "type": "assets"
  },
  "included": [],
  "jsonapi": {
    "version": "1.0"
  },
  "meta": {
    "authentication": {
      "authorized": true,
      "clientId": null,
      "mode": "PUBLIC_APIKEY",
      "modeTitle": "Public API Key",
      "tag": "XXXXXXXXXXXXXXX",
      "user": null
    },
    "server": {
      "commit": "7c78ee15",
      "status": {
        "healthy": true,
        "read_only": false,
        "tombstone": false
      },
      "version": "3.187.0"
    }
  }
}

I'm missing data.colors, data.media_height, data.media_width.

My code is very basic:

import fetch from 'node-fetch'

const imgix_key = 'xxxxxxxx'
const imgix_source_id = 'xxxxxxxx'

const imgix_url = `https://api.imgix.com/api/v1/assets/${imgix_source_id}/test/roses.jpeg`

async function init() {
  const method = 'get'

  const headers = {
    Authorization: `Bearer ${imgix_key}`,
    'Content-Type': 'application/x-www-form-urlencoded',
  }


  const response = await fetch(imgix_url, { headers, method })
  const body = await response.text()

  console.log(body)
}

init()

I can access data.colors if I request this image from the rendering API with the palette=json parameter, so I know the property theoretically exists.

Request to https://xxxxxxx.imgix.net/test/roses.jpeg?palette=json:

{
   "colors":[
      {
         "red":0.960784,
         "hex":"#f5ece9",
         "blue":0.913725,
         "green":0.92549
      },
      {
         "red":0.843137,
         "hex":"#d7cb99",
         "blue":0.6,
         "green":0.796078
      },
      {
         "red":0.768627,
         "hex":"#c44535",
         "blue":0.207843,
         "green":0.270588
      },
      {
         "red":0.670588,
         "hex":"#aba544",
         "blue":0.266667,
         "green":0.647059
      },
      {
         "red":0.454902,
         "hex":"#746a4f",
         "blue":0.309804,
         "green":0.415686
      },
      {
         "red":0.227451,
         "hex":"#3a452f",
         "blue":0.184314,
         "green":0.270588
      }
   ],
   "average_luminance":0.387471,
   "dominant_colors":{
      "vibrant":{
         "red":0.698039,
         "hex":"#b2524d",
         "blue":0.301961,
         "green":0.321569
      },
      "muted_light":{
         "red":0.823529,
         "hex":"#d2b3aa",
         "blue":0.666667,
         "green":0.701961
      },
      "muted":{
         "red":0.698039,
         "hex":"#b2524d",
         "blue":0.301961,
         "green":0.321569
      },
      "vibrant_dark":{
         "red":0.368627,
         "hex":"#5e220c",
         "blue":0.0470588,
         "green":0.133333
      },
      "vibrant_light":{
         "red":0.898039,
         "hex":"#e5c699",
         "blue":0.6,
         "green":0.776471
      },
      "muted_dark":{
         "red":0.305882,
         "hex":"#4e3529",
         "blue":0.160784,
         "green":0.207843
      }
   }
}

I've tried adding a fields parameter, like this:

https://api.imgix.com/api/v1/assets/xxxxxxxxxxxxxx/test/roses.jpeg?fields[assets]=name,origin_path,colors,media_width,media_height

I get the specified properties, but they're still null.

Could anyone help me understand why these properties are coming back null?

I would like to write a prebuild script to cache the image metadata so I can set image dimensions and colorful placeholder blocks.

Thanks

1

There are 1 answers

0
sherwinski On

I would encourage you to write into our support team ([email protected]) with this issue. The reason these fields return null is likely tied to your account/Source settings, which they can help you navigate. Hope that helps.