I pulled up a test fort to try to figure this out. It didn't have bilberries, so I tested with prickle berries instead. I marked some for gathering, and used "make-legendary HERBALISM" on my herbalist to ensure that gathering was successful. I selected the berries with "k" and ran "lua" followed by some commands:
[lua]# ~item:getType()
53
[lua]# ~df.item_type[item:getType()]
PLANT
[lua]# ~item:getSubtype()
-1
So it appears that PLANT is what you want, not PLANT_GROWTH, and you don't need a subtype (well, NONE would also work, because that's equivalent to -1, but you can just leave it out).
To figure out the material, I used:
[lua]# ~dfhack.matinfo.decode(item.mat_type, item.mat_index)
<material 419:180 PLANT:BERRIES_PRICKLE:STRUCTURAL>
type = 419
mode = plant
index = 180
material = <material: 0x7fffd993eda0>
subtype = 0
plant = <plant_raw: 0x7fffd993d7c0>
It turns out that the Lua string representation of a dfhack.matinfo object contains the material token ("PLANT:BERRIES_PRICKLE:STRUCTURAL"), but you could also get it with:
[lua]# ~dfhack.matinfo.getToken(item.mat_type, item.mat_index)
PLANT:BERRIES_PRICKLE:STRUCTURAL
or this to get just the ID (the "STRUCTURAL" part):
[lua]# ~dfhack.matinfo.decode(item.mat_type, item.mat_index).material.id
STRUCTURAL
https://docs.dfhack.org/en/stable/docs/Lua%20API.html#material-info-lookup might have some other useful material-related functions.
This creates a "prickle berry" item, and it's combined with the 5 "regular" prickle berries that I harvested earlier in the stocks screen, so I'm pretty sure it's correct (but I haven't tried forcing a dwarf to eat it to make sure).