Douglas, segue código, sofri alguns dias aqui fazendo funcionar, graças a grande documentação fornecida pelo estado.
o problema que você deve estar passando é que o requestbody não pode ser um TStringStream, mudei para TStream e começou aceitar, também deixa as configurações como está abaixo, se tiver alguma coisa diferente vai voltar ao erro que esta aparecendo ai,
coloca o componente no formulário (idhttp), não coloca nenhuma propriedade e apenas seta como no código abaixo, suave amigo, abraço.
var:
RequestBody: TStream;
lResponse : TStringStream;
ZipEncode : String;
begin
....
// Codifica o zip:
ZipEncode := '"' + EncodeFile(NomeZIP) + '"';
// deixa o idhttp dessa forma:
lResponse := TStringStream.Create();
RequestBody := TStringStream.Create(ZipEncode, TEncoding.UTF8);
try
idHttp1.Request.ContentType := 'application/json';
IdHTTP1.Request.CustomHeaders.Clear;
IdHttp1.Request.CustomHeaders.AddValue('Accept', 'application/json');
IdHttp1.Request.CustomHeaders.AddValue('Host', 'https://tributario.sef.sc.gov.br');
IdHttp1.Request.CustomHeaders.AddValue('Cache-Control', 'no-cache');
IdHttp1.Request.CustomHeaders.AddValue('Content-Type', 'application/json');
idHttp1.Post('https://tributario.sef.sc.gov.br/api/drcSt/arquivo/ValidarEstrutura', RequestBody, lResponse);
lResponse.Position := 0;
// Trata o retorno em um richedit:
reResp.Lines.LoadFromStream(lResponse);
finally
lResponse.Free();
end;