Scripted REST API example - streaming file attachments

  • Release version: Zurich
  • Updated July 31, 2025
  • 1 minute to read
  • This example demonstrates how to send an image attachment to a requesting user as a binary stream.

    /**
     *  Sample Scripted REST Resource that returns a stream of binary representing an attachment
     *  This sample uses ServiceNow JavaScript API GlideSysAttachmentInputStream to get an attachment as a stream then
     *  users WriteStream to stream the response.
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        var hdrs = {},
            attachment_sys_id = '1852fd52471321009db4b5b08b9a71a9';
    
        hdrs['Content-Type'] = 'image/jpeg';
        response.setStatus(200);
        response.setHeaders(hdrs);
    
        var writer = response.getStreamWriter();
        var attachmentStream = new GlideSysAttachmentInputStream(attachment_sys_id);
        writer.writeStream(attachmentStream);
    })(request, response);

    A request to this resource returns the following response.

    //  sample response
    /*
     HTTP/1.1 200 OK
     Set-Cookie: glide_session_store=SYSTEM; Expires=Fri, 30-Oct-2015 21:57:00 GMT; Path=/; HttpOnly
     Content-Type: image/jpeg
     Transfer-Encoding: chunked
     Date: Fri, 30 Oct 2015 21:26:59 GMT
     Connection: close
     Server: ServiceNow
    
     <binary response body excluded from this sample>
     */