You seem to run workflow in loop? (iteration). Do you really need this?
It’s hard to help because we don’t see how you set the API Workflow itself (how the data are coming. Did you set the parameters that seem to be keywords as Option set type? … this is what you should do if possible…)
For adding plain text (like for ‘upc’ I use ‘upc:item #iteration’) and for adding a list of option sets (like ‘Color’) I use ‘Color add list All Color:filtered’ but for ‘Shape’ (a single option set) I don’t know how to connect the text ‘Circle’ to finding the correct Shape option set to add. I initially thought I could do a search for the Shape Option Set’s Display.
You doesn’t say why you are using loop… Schedule API on a list is better. But you may have some reason to use loop. (If you can use Schedule on a list, it’s better because it’s cheaper and faster).
As from your settings the first thing you seem to do wrong is to set the type as text instead of option set directly. If your display is what you provide as a list tonyour backend wf, there’s no reason to not set this directly to OS type
About shape, the issue is that you are sending a list of shape but the field is = … so only one item?