Eu fiz um grande avanço, e é claro, logo após eu postar minha primeira pergunta no Unix.SE. Eu reli os documentos e percebi (pela primeira vez, pela primeira vez) que estou usando indevidamente a string delimitada por ponto-e-vírgula.
Os documentos indicam que o ponto-e-vírgula é usado para não separar vários campos, mas várias qualidades de o mesmo campo. É aí que eu errei.
Os documentos da API indicam que os endpoints aceitam uma carga útil JSON codificada em url como payload_json
field, então estou fazendo isso:
local _json="payload_json=$(build_json)" # defined elsewhere
local _file="file=@file"
curl -i -F "${_file}" -F "${_json}" "${url}"
e eis que funciona. RTFD!