Skip to main content

Introduction

fileX is a centralized, secure file transfer service from FINRA, where customers (member firms and industry participants) can send or receive batch file(s) to FINRA Applications like CRD, ACATS  etc. 

 fileX Flow Diagram

fileX supports multiple access methods to send/receive files, and a customer may choose to use any of the supported access methods to transfer file(s). FINRA/s entitlement process controls the account provisioning and entitlements which control access to various application sub-spaces. Sub-spaces are the locations within each application in fileX where customers can upload or download files.   

Getting Started

How to Access fileX

fileX supports four access methods:

SFTP: FINRA customers can upload or download files through Secure File Transfer Protocol (SFTP), a standard file transfer mechanism to securely transmit files between systems and machines. fileX supports the full security and authentication functionalities provided by SFTP.
HTTPS: FINRA customers can upload or download files using REST APIs over HTTPS protocol. Customers can make standard REST API calls to the endpoint URL with valid credentials for authentication. REST API calls are encrypted through HTTPS.
S3: FINRA customers can upload or download files natively through AWS S3 APIs. Customers who are already using Amazon AWS S3 can take advantage of this method to send/receive files directly to/from their S3 bucket.
UI UPLOADS : FINRA customers can upload and download files, one at a time, through the FINRA Gateway Upload app. Customers can also use Upload app to manage their file history and view file feedback.

Onboarding

Entitlement and Access Control

FINRA Entitlement Service controls access and privileges granted to customer accounts to access various services provided by FINRA. Customers have the option of creating multiple file transfer accounts with different access privileges. Types of user access includes, but is not limited to, 

  • read/download only
  • submit only
  • submit and download

This allows customers to support separation of duties within the firm across different departments. The Administrator (typically SAA) of the firm needs to contact FINRA Support or FINRA Entitlement Service to create file transfer accounts and request respective FINRA Application File Transfer entitlements.  If you have any questions about the FINRA Entitlement program, please check https://www.finra.org/filing-reporting/entitlement .

fileX leverages FINRA provisioned entitlements to control access to specific upload/download directories or the respective HTTPS REST endpoints. Access to the upload and download capabilities will be controlled by specific FINRA entitlements.

On Behalf Of

Third parties can submit or download secure file transfers through fileX on behalf of (OBO) firms or organizations that have granted them permission. The OBO feature is currently only available through UI or SFTP transfer methods. 

Pre-requisite  

To submit or retrieve a file on behalf of another party, you must have a Prime account. See here for more information on how to create On Behalf Of (OBO) Relationship Requests.

fileX Basics

The FINRA API Platform authentication and authorization scheme is based on OAuth 2.0., and there are two steps. The first call is made to FINRA Identity Platform (FIP) using credentials provided by FINRA Entitlement Service to get an OAUTH2 token. The second call is made to the fileX API endpoint with the "Authorization= Bearer" header and with the token generated in step 1. 

To invoke FIP OAUTH2 API: 

  1. Use any HTTP client, make a HTTPS POST call with FINRA Entitlement service provided credentials as Basic Auth header.
  2. Use the environment specific domain with the OAUTH URI: fip/rest/ews/oauth2/access_token 3. Use any standard library that supports OAUTH2 client credentials grant.
    1. The library should be configured with grant_type=client_credentials 
    2. Client id, Client secret will be the existing user account id and password provided by FINRA Entitlement services 

      FIP OAUTH2 API response will be in JSON format. Example of the response from https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token

{
    "access_token": "*AAJTSQACMDIABHR5cGUAA0pXVAACUzEAAjAx*eyJ0eXAiOiJKV1QiLCJjdHkiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ZXlKMGVYQWlPaU pLVjFRaUxDSmxibU1pT2lKQk1USTRRMEpETFVoVE1qVTJJaXdpWVd4bklqb2laR2x5SW4wLi56RlNXS09XZklKX1FJT3htWEZtalpB LjF4LVVCMF9OdG85WmhkZlRvTW10dXNNZkxGMUN6MS0tVVVKYTYzYXBwdm8xWExVYzRLXy1raUVEOHFpRXpLZU14aUtLWDc1eTRwcVc4eVlDMs",
    "scope": "any",
    "token_type": "Bearer",
    "expires_in":"43170"
}

 

FINRA recommends customers to first test their setup in lower environments before cutting it over to ‘Production’.

 PRODUCTIONCUSTOMER TESTLOWER (QA)
Environment descriptionLive/production environmentProduction-like customer test environmentNon-Production environment for test purposes
CredentialsProduction FINRA Enterprise Web Security (EWS) credentialsProduction FINRA Enterprise Web Security (EWS) credentialsContact the respective FINRA application to get credentials for this environment
Hostname /URLfilex.finra.orgfilex.ct.finra.orgfilex-int.qa.finra.org
Static IP Addresses for SFTP52.207.197.35
35.171.199.181
18.209.156.254
34.225.135.103
52.201.46.30
52.70.2.197
Port for SFTP222222
Port for REST methods443443443
FIP OAUTH2 URLhttps://ews.fip.finra.org/fip/rest/ews/oauth2/access_tokenhttps://ews.fip.finra.org/fip/rest/ews/oauth2/access_tokenhttps://ews-qaint.fip.qa.finra.org/fip/rest/ews/oauth2/access_token

FINRA Web applications/systems use TLS Certificates signed by following Certificate Authorities: 

  • Entrust CA
  • DigiCert CA
  • Amazon CA 

Please ensure your applications/system trusts all the above listed Certificate Authorities when using fileX HTTPS REST APIs. FINRA APIs only support TLS version 1.2 encryption standards. See FAQs for supported ciphers.

The FIP API can return a range of standard HTTP response codes based on the request made to the service. Here is a list of common response codes:

Response CodePossible Reasons
200 OKIndicates a successful request
400 Bad Request: error_message: “Invalid Credentials”Either the username or password provided were incorrect or there is an issue with the user
400 Bad Request: error_message: “Invalid credentials format”The Basic Authorization header’s string is malformed
400 Bad Request: error_message: “Grant type is required”The “grant_type” parameter key was either malformed or not provided
400 Bad Request: error_message: “Only client_credentials grant type is supported”The value for the “grant_type” parameter was something other than “client_credentials”
403 ForbiddenIndicates request to an invalid resource
500 Internal Server ErrorIndicates a possible problem with FIP

fileX APIs return a range of standard HTTP response codes based on the request made to the service. Table below lists the response codes and possible reasons

ResponsePossible Reasons
200 OKIndicates a successful request
400 Bad RequestIndicates the request was malformed
  
401 UnauthorizedIndicates that either the account lacks sufficient entitlement to access requested resource or provided credentials are invalid
403 ForbiddenIndicates request to an invalid resource
404 Not FoundIndicates the file/directory is not found/available
500 Internal Server ErrorIndicates a possible problem with fileX service

If you encounter issues or response code other than 200 (success), please check your request for errors/invalid content and retry. If you still encounter issues after fixing your request, please contact FINRA Support with the response code and the request details for further assistance

The following header parameters should be passed (as applicable) when making all the fileX REST API calls:

HeaderRequired (Y/N)DefaultExample
AuthorizationYN/AAuthorization: Bearer (OAUTH Token from FIP)
AcceptNapplication/jsonapplication/json, application/xml
Content-TypeNapplication/jsonapplication/json, application/xml

Access Methods

The following steps are required to use the fileX SFTP service

Open firewall to allow outbound traffic on port 22 to FINRA SFTP host IP addresses.

  1. Request FINRA to allow inbound traffic on port 22 for your outbound server’s internet routable IP address. Please call FINRA support at 800-321-6273 and provide the list of external IPs to be whitelisted to open the network/firewall from FINRA.
  2. Request FINRA Credentials (if not already available) with entitlements for specific FINRA application file transfer.
  3. Install and configure a SFTP client/library to connect and transfer files. 
  4. Ensure the following SFTP SSH configurations are set appropriately on your SFTP client 

    Supported Ciphers and Algorithms List

      Supported Ciphers and Algorithms
    1Supported SSH Ciphers
    2Supported SSH Key Exchange Algorithms
    • mlkem768x25519-sha256
    • mlkem768nistp256-sha256
    • mlkem1024nistp384-sha384
    • diffie-hellman-group14-sha256
    • diffie-hellman-group16-sha512
    • diffie-hellman-group18-sha512
    • ecdh-sha2-nistp384
    • ecdh-sha2-nistp521
    • ecdh-sha2-nistp256
    • diffie-hellman-group-exchange-sha256
    • [email protected]
    • curve25519-sha256
    3Supported SSH MAC Algorithms

     

  5. Using On Behalf Of (OBO) for SFTP
    • Open your SFTP client.
    • Log in with your Prime account user name and password, or you can use your SSH key.
    • Once you are connected to the host, you can see the profile org IDs that you are entitled to submit through OBO, and you can upload and download files with that profile org.
      • Note: You can view an org ID to see the entitlement for the profile. For example, if an org ID shows 606 NMS, the profile is entitled for SEC Rule 606 NMS Reporting.
      • Here is an example of submitting a file OBO using CURL commands:
        A screenshot of a computer

AI-generated content may be incorrect.

The following steps are required to use the fileX S3 Direct service: 

  1. Open firewall to allow outbound traffic on port 443 from your outbound server IP address to fileX HTTPS REST APIs and to FINRA Identity Platform (FIP) API endpoints.
  2. Request FINRA Credentials (if not already available) with entitlements for specific FINRA application file transfer.
  3. Open firewalls to allow traffic to/from AWS S3.
    1. For AWS S3 IP ranges refer to: https://docs.aws.amazon.com/general/latest/gr/aws-ipranges.html.
  4. Invoke FIP OAUTH API to obtain OAUTH token .
  5. Obtain S3 STS access token from the fileX REST API for AWS S3.
  6. Use the S3 STS access token to upload/download using AWS S3 APIs or AWS CLI or AWS SDK wrapper libraries.
  7. Request Parameters 
     

    ParametersRequiredAccepted ValuesCase SensitiveDescription
    ORG_IDYNumerical values 0-9+N/ANumber representing the account’s orgId provided by FINRA (e.g. 0001 or 888888)
    APPLICATIONYAlphanumeric [a-zA-Z0-9]YName of the FINRA application (e.g. focus, crd, appX)
  8. Response Attributes 
     

    Element/Attribute KeyDescription
    regionAWS region where S3 bucket is located
    sessionNameUnique identifier generated by fileX for the request to generate the token
    readPathsList of application spaces available to the users to download file(s)
    writePathsList of application spaces available to the users to upload file(s)
    accessKeyId20 character alphanumeric string that identifies the temporary access token
    secretAccessKey40 character alphanumeric string used to sign the request
    sessionTokenToken that users must pass to the service API to use the access token. Token is valid for 1 hour only. Users will have to generate and use new tokens to upload/download additional file(s) to AWS S3 after the previous token is expired.
    expirationTime at which current access token expires

Complete the following steps to upload/download your file using AWS S3:

  1. Get OAUTH2 access_token from FIP OAUTH2 API (HTTP Method: POST) curl --location --request POST 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=c…' --header 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXX'
  2. Invoke fileX API (HTTP Method: GET) curl -X GET https://filex.finra.org/S3TransferTokens/0001/app1 -H "Accept: application/json" -H "Authorization: Bearer
  3. After getting the access token using fileX S3Token API, customers can use any of the AWS S3 APIs, AWS CLI or AWS SDK wrapper libraries to upload/download files. 

    GET Sample Request to fileX API
    https://filex-int.qa.finra.org/S3TransferTokens/7777/app1


     

    Sample Response from fileX API
    {
      "region": "us-east-1",
      "sessionName": "filexuser7777@26592f93-f124-4d9a-a6ed-eefc3c9dba01",
      "readPaths": [
        "1422-4800-0760-filex-qa-int/7777/app1/in_arcv/",
        "1422-4800-0760-filex-qa-int/7777/app1/out/"
      ],
      "writePaths": [
        "1422-4800-0760-filex-qa-int/7777/app1/in/"
      ],
      "credentials": {
        "accessKeyId": "ASIAST4OK6N2C5M",
        "secretAccessKey": "UjJ968D0V4lzIN65FfnlKUqFdBig2va0Cr",
        "sessionToken": "FwoGZXIvYXdzENb//////////wEaDB2zD7M442u66VFVVSK0FbhMz2DWa0HHkLxEH+uKHQg22mTJzOxhCE8zEv3tUnF1wzGWL5I//zVch7abvQR6ivLw12bGTyckLADiMOEkLNDOBzAlaaSWTaGiS0A8k5RKsDelUsH4rtyducNcJRRGAzjnRII+HWOc1LyulULlAz2tO44YDKmOWOGjdnPr2xljOLTx
    PgwaVzNNM8NTcdCGNepWICl3r2A1UUESbzWrG6RCNyhU9vyxt4PJiRyRhHj6pQ4I++GVUvEhmyfiH4HbTo39x5uteFZw2Utn0jDp6TPHF8CvZmUf9a9Ygxo58axzJbDlBoFr0o2Y44TCHisYaewJfSptEdkPyQGIqFi1v1",
        "expiration": "2025-08-22T17:29:58.000-04:00"
      }
    }
    
    


     

    Sample Python Code to call FIP and fileX
    
    import base64, requests, sys, json
    
    username = '1234ftp12'
    password = '******'
    # Base64 encode username:password
    userpass = username + ":" + password
    authorization = base64.b64encode(userpass.encode()).decode()
    # Prepare headers for POST call to FIP OAUTH2
    fipRequestHeaders = {
        'Authorization': 'Basic ' + authorization,
    }
    # Make the request to FIP
    fipUrl = 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=client_credentials'
    fipResponse = requests.post(fipUrl, headers=fipRequestHeaders)
    fipResponseJson = json.loads(fipResponse.text)
    # Retrieve access token from FIP response
    access_token = fipResponseJson["access_token"]
    # Prepare headers for GET call to fileX API
    fileXRequestHeaders = {
        'Authorization': 'Bearer ' + access_token,
        'Accept': 'application/json',
    }
    fileXUrl = "https://filex.finra.org/files/0001/app1"
    # Make the request
    fileXResponse = requests.get(fileXUrl, headers=fileXRequestHeaders)
    
    


     

    Sample AWS CLI Code to upload a file to an application sub-space
    export AWS_ACCESS_KEY_ID=ASIA203QSOJNCHBALYNN
    export AWS_SECRET_ACCESS_KEY=phshuUXUANHMXx9awFsZx7YJSX1074t4d02nG2p
    export AWS_ACCESS_TOKEN=FOoGZXIvYXdcEGoaDMx5LP2o0aRUA5QzyiKoBE/BrAiV9FRPb/ilip/rXf8nRgMTODCoSeMa23481K5//gYcRCVOIcCzfjWgv+HFKIOBrerceso9ROIZBHVBIAj3WNNjyb
    OtaxSvUOQc5cTioWA.UiPOnhpgUy+fC1PnfgXAAbugyfaxulrolyWOL9TACfnURzsbHOUD8+HMZt5qGSsEppljrkb/9Gxad+NXFgQ568cheffk9yn25NcaER95R11Si60/dEIE2WZPAleh/
    Xt12dpPeeskm/KEWwAq2bN3DwBOYeoG8IA6exlickneMu6L300cIPcWbxwcpZpTG5cOPPOI6/C6XvuFa918yelxMFBBNf7PoRa0x1KTeT/m/d.Sd/LWpa/31aTeCFPFoBPkeG/
    gpJPLrvrwlKUFxQkVVCRfFwdTkezauvQFov4D9J0ZkMaHFsfinWMitxrrTZOUVtgzZd5BayxOLmyoK9g2gE2fOfg9Rr5Far5Ds3xynR3dl94nbiH5PjzonGllsaHe4Rm0cT+Ta8f07i0B/
    T+nU5Kb8c4t7alyh2rXc+KXBBiRrtOOVCocYbcMZFUzBKMo02xNa5msimSM21CC/
    e3jPF14erSeEsAyu+gXBX2NpoVekqQ0UaRalYvgGTLdR82WzfblxFfUMudoWIt7uatih8/fgepV6NsmAXHUVck+SnIrGAXLmHgW6CFZDS/R/
    cLeyLXV54zkDqATLezheYIGhC2XsGzFYukAM3B039akr2UWWwSjjo/zjell==
    
    aws s3 cp test.txt s3://bucket-filex/001/app1/in/test.txt

Complete the following steps to upload your file via the Upload app in  FINRA Gateway: 

  1. Log in to FINRA Gateway: https://gateway.finra.org/. In case of using the On Behalf Of feature, login using your prime account.
  2. Continue to multi-factor authentication and complete the prompt in your MFA client. For example, Duo is an MFA client.
    1. Important: In case of using On Behalf Of feature, you will see your Prime account listed first, followed by profiles from organizations that have given you permission to submit files for them. Profile accounts always start with [obo+the Org ID]. Select the profile you want to submit on behalf of. 
  3. Select Upload in the left menu bar or from the dashboard page
  4. fileX Dashboard
  5. Make your selections and Submit your file for upload. You must upload one file at a time, and file size cannot exceed 5120 MB.
  6. Select the Upload File History tab to view the files you have uploaded for the past thirty days. Select the File Feedback tab to download your file with FINRA’s feedback.
  7. A screenshot of a upload and manage files

AI-generated content may be incorrect.
  8. To switch Profiles while using On Behalf Of (OBO) feature, go to your account and select Manage Log Ins. A screenshot of a search

AI-generated content may be incorrect.
  9. From the login screen, you can change accounts, complete MFA, and then you can upload files for another profile.

The following steps are required to use the fileX HTTPS REST API service: 

  1. Open firewall to allow outbound traffic on port 443 from your outbound server IP address to fileX HTTPS REST APIs and to FINRA Identity Platform (FIP) API endpoints
  2. Request FINRA Credentials (if not already available) with entitlements for specific FINRA application file transfer (see section 4)
  3. Open firewalls to allow traffic to/from AWS S3. Upload and Download services currently use native AWS S3 endpoints.
  4. For AWS S3 IP ranges refer to: https://docs.aws.amazon.com/general/latest/gr/aws-ipranges.html
  5. Invoke FIP OAUTH API to obtain OAUTH token
  6. Invoke/Call fileX HTTP REST APIs with FIP OAUTH token as detailed in section 5 below

fileX provides the following HTTPs endpoints to users.

Provides an ability to get all the applications or directories that the user has access to.

  1. Request Parameter
     

    ParametersRequiredAccepted ValuesCase SensitiveDescription
    ORG_IDYNumerical values 0-9+NNumber representing the account’s orgId provided by FINRA (e.g. 0001 or 888888)
  2. Response Parameter
     

    Element/Attribute KeyDescription
    nameName of the present working space/directory
    typeType of this object
    DIR = directory
    metadata -> writabledenotes if this is a writable space true/false
    childrenChild spaces/directories accessible Name, type, and metadata values are similar to self
    _linksAPI links to self and children
  3. Sample Code for GET a list of available applications

    Step 1: Get OAUTH2 access_token from FIP OAUTH2 API (HTTP Method: POST) curl --location --request POST 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=c…' --header 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXX' 

    Step 2: Invoke fileX API (HTTP Method: GET) curl -X GET https://filex.finra.org/files/0001 -H "Accept: application/json" -H "Authorization: Bearer

    GET Sample Request to fileX API
    https://filex.finra.org/fileX/0001


     

    GET Sample Response
    {
      "name": "0001",
      "type": "DIR",
      "metadata": {
        "writable": false
      },
      "children": [
              
        {
          "name": "testDIR1",
          "type": "DIR",
          "metadata": {
            "writable": false
          }
        },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
        {
          "name": "testDIR2",
          "type": "DIR",
          "metadata": {
            "writable": false
          }
        }
      ],
      "_links": {
        "self": [
          {
            "href": "https://filex.finra.org/files/0001"
          }
        ],
        "parent": [
          {
            "href": "https://filex.finra.org/files"
          }
        ],
        "children": [
          {
            "href": "https://filex.finra.org/files/0001/testDIR1"
          },
          {
            "href": "https://filex.finra.org/files/0001/testDIR2"
          }
        ]
      }
    }

Provides a list of sub-spaces within a given application or directory as well as links to the directory and spaces

  1. Request Parameters
     

    ParametersRequiredAccepted ValuesCase SensitiveDescription
    ORG_IDYNumerical values 0-9+NNumber representing the account’s orgId provided by FINRA (e.g. 0001 or 888888)
    APPLICATIONYAlphanumeric [a-zA-Z0-9]YName of the FINRA application (e.g. focus, crd, appX)
  2. Response Parameters
     

    Element/Attribute KeyDescription
    nameName of the present working space/directory
    typeType of this object
    DIR = directory
    metadata -> writabledenotes if this is a writable space
    true/false
    childrenChild spaces/directories accessible
    Name, type, and metadata values are similar to self
    _linksAPI links to self and children
  3. Sample Code for GET a list of available application spaces

    Step 1: Get OAUTH2 access_token from FIP OAUTH2 API (HTTP Method: POST) curl --location --request POST 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=c…' --header 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXX' 

    Step 2: Invoke fileX API (HTTP Method: GET) curl -X GET https://filex.finra.org/files/0001 -H "Accept: application/json" -H "Authorization: Bearer

    GET Sample Request to fileX API
    https://filex.finra.org/fileX/0001/app1


     

    GET Sample Response
    
    {
      "name": "app1",
      "type": "DIR",
      "metadata": {
        "writable": false
      },
      "children": [
        {
          "name": "out",
          "type": "DIR",
          "metadata": {
            "writable": false
          }
        },
        {
          "name": "in",
          "type": "DIR",
          "metadata": {
            "writable": true
          }
        },
        {
          "name": "in_arcv",
          "type": "DIR",
          "metadata": {
            "writable": false
          }
        }
      ],
      "_links": {
        "self": [
          {
            "href": "https://filex.finra.org/files/0001/app1"
          }
        ],
        "parent": [
          {
            "href": "https://filex.finra.org/files/0001"
          }
        ],
        "children": [
          {
            "href": "https://filex.finra.org/files/0001/app1/out"
          },
          {
            "href": "https://filex.finra.org/files/0001/app1/in"
          },
          {
            "href": "https://filex.finra.org/files/0001/app1/in_arcv"
          }
        ]
      }
    }
    

Provides an ability to get all the application sub-spaces that the user has access to.

  1. Request Parameter
     

    ParametersRequiredAccepted ValuesCase SensitiveDescription
    ORG_IDNNumerical values 0-9+N/ANumber representing the account’s orgId provided by FINRA (e.g. 0001 or 888888)
    APPLICATIONYAlphanumeric [a-zA-Z0-9]YName of the FINRA application  
    SUB_SPACEYAlphanumeric [a-zA-Z0-9]  YName of the FINRA application subspace  
  2. Response Parameter
     

    Element/Attribute KeyDescription
    nameName of the present working space/directory
    typeType of this object
    DIR = directory
    metadata -> writabledenotes if this is a writable space true/false
    children -> name  Name of the file  
    children -> type  Type of this object FILE = file  
    children -> metadata -> writable  denotes if this file can be modified true/false
    children -> metadata -> contentLength  Size of the file in bytes  
    children -> metadata -> lastModified  Time file was last modified with UTC time zone
    _links  API links to parent, self and children
  3. Sample Code for GET a list of available applications

    Step 1: Get OAUTH2 access_token from FIP OAUTH2 API (HTTP Method: POST) curl --location --request POST 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=c…' --header 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXX' 

    Step 2: Invoke fileX API (HTTP Method: GET) curl -X GET https://filex.finra.org/files/0001/app1/out -H "Accept: application/json" -H "Authorization: Bearer

    GET Sample Request to fileX API
    https://filex.finra.org/fileX/0001/app1/out


     

    GET Sample Response
    {
      "name": "out",
      "type": "DIR",
      "metadata": {
        "writable": false
      },
      "children": [
           
        {
          "name": "Testfile.txt",
          "type": "FILE",
          "metadata": {
            "writable": false,
            "contentLength": 130766,
            "lastModified": "2025-08-04T07:30:34.000-04:00"
          }
        },
        {
          "name": "Testfile2.txt",
          "type": "FILE",
          "metadata": {
            "writable": false,
            "contentLength": 130766,
            "lastModified": "2025-08-05T07:29:18.000-04:00"
          }
        }
      ],
      "_links": {
        "self": [
          {
            "href": "https://filex.finra.org/files/0001/app1/out"
          }
        ],
        "parent": [
          {
            "href": "https://filex.finra.org/files/0001/app1"
          }
        ],
        "children": [
          {
            "href": "https://filex.finra.org/files/0001/app1/out/Testfile.txt"
          },
          {
            "href": "https://filex.finra.org/files/0001/app1/out/Testfile2.txt"
          }
        ]
      }
    }
    
    


     

    Python Code Sample to get a list of files
    
    import base64, requests, sys, json
    
    username = '1234ftp12'
    password = '******'
    # Base64 encode username:password
    userpass = username + ":" + password
    authorization = base64.b64encode(userpass.encode()).decode()
    # Prepare headers for POST call to FIP OAUTH2
    fipRequestHeaders = {
        'Authorization': 'Basic ' + authorization,
    }
    # Make the request to FIP
    fipUrl = 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=client_credentials'
    fipResponse = requests.post(fipUrl, headers=fipRequestHeaders)
    fipResponseJson = json.loads(fipResponse.text)
    # Retrieve access token from FIP response
    access_token = fipResponseJson["access_token"]
    # Prepare headers for GET call to fileX API
    fileXRequestHeaders = {
        'Authorization': 'Bearer ' + access_token,
        'Accept': 'application/json',
    }
    fileXUrl = "https://filex.finra.org/files/0001/app1/out"
    # Make the request
    fileXResponse = requests.get(fileXUrl, headers=fileXRequestHeaders)
    
    

Provides an ability to download files from application sub-spaces that the user has access to.

  1. Request Parameter
     

    ParametersRequiredAccepted ValuesCase SensitiveDescription
    ORG_IDNNumerical values 0-9+N/ANumber representing the account’s orgId provided by FINRA (e.g. 0001 or 888888)
    APPLICATIONYAlphanumeric [a-zA-Z0-9]YName of the FINRA application  
    SUB_SPACEYAlphanumeric [a-zA-Z0-9]  YName of the FINRA application subspace  
    FILE_NAME  YAlphanumeric [a-zA-Z09]!@,&-='.  YName of the file  
  2. Response Parameter
     

    Element/Attribute KeyDescription
    urlURL used to execute the file download via GET call  
    expirationTime  Time URL expires. Cannot initiate download after expiration time.
  3. Sample Code to download a file

    Step 1: Get OAUTH2 access_token from FIP OAUTH2 API (HTTP Method: POST) curl --location --request POST 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=c…' --header 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXX' 

    Step 2: Invoke fileX API (HTTP Method: GET) curl -X GET https://filex.finra.org/files/0001/app1/out/testfile.txt -H "Accept: application/json" -H "Authorization: Bearer

    GET the pre-signed URL from the fileX API
    https://filex.finra.org/fileX/0001/app1/out/testfile.txt


     

    Sample Response for the pre-signed URL
    
    {
      "url": "https://1422-4800-0760-filex-qa-int.s3.amazonaws.com/79/fileX/out/0AcREpi4FR-AtestVerboseRegexWithLette-1%2FX-Amz-Expires=60&X-Amz-SignedHeaders=host&X-Amz-Security-Token=FwoGZXIvYXdzEOX%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDA3fRJlRsgYWKxgu5yLUAT3YUGSbtHh1G93w0BDuYQvcImXpEP7gu51a6088df6764d73fc5cd9b",
      "expirationTime": "2025-08-23T07:53:34.620-04:00"
    }
    


     

    Python code sample to get the pre-signed URL:  
    
    import base64, requests, sys, json
    
    username = '1234ftp12'
    password = '******'
    # Base64 encode username:password
    userpass = username + ":" + password
    authorization = base64.b64encode(userpass.encode()).decode()
    # Prepare headers for POST call to FIP OAUTH2
    fipRequestHeaders = {
        'Authorization': 'Basic ' + authorization,
    }
    # Make the request to FIP
    fipUrl = 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=client_credentials'
    fipResponse = requests.post(fipUrl, headers=fipRequestHeaders)
    fipResponseJson = json.loads(fipResponse.text)
    # Retrieve access token from FIP response
    access_token = fipResponseJson["access_token"]
    # Prepare headers for GET call to fileX API
    fileXRequestHeaders = {
        'Authorization': 'Bearer ' + access_token,
        'Accept': 'application/json',
    }
    fileXUrl = "https://filex.finra.org/files/0001/app1/out/testfile.txt"
    # Make the request
    fileXResponse = requests.get(fileXUrl, headers=fileXRequestHeaders)
    
    

This method allows users to upload file(s) to an application sub-space

  1. Request Parameter
     

    ParametersRequiredAccepted ValuesCase SensitiveDescription
    ORG_IDNNumerical values 0-9+N/ANumber representing the account’s orgId provided by FINRA (e.g. 0001 or 888888)
    APPLICATIONYAlphanumeric [a-zA-Z0-9]YName of the FINRA application  
    SUB_SPACEYAlphanumeric [a-zA-Z0-9]  YName of the FINRA application subspace  
    FILE_NAME  YAlphanumeric [a-zA-Z09]!@,&-='.  YName of the file  

    filex-

    {attribute}  

    NAlphanumeric [a-zA-Z09]!@,&-='.  NOptional metadata that can be attached with the file e.g. filex-InternalReference  
  2. Response Parameter
     

    Element/Attribute KeyDescription
    urlURL used to execute the file download via GET call  
    expirationTime  Time URL expires. Cannot initiate download after expiration time.
    trackingId  Unique Identifier to track the upload file request
  3. Sample Code for Upload file(s) to the  application sub-space

    Step 1: Get OAUTH2 access_token from FIP OAUTH2 API (HTTP Method: POST) curl --location --request POST 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=c…' --header 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXX' 

    Step 2: Invoke fileX API (HTTP Method: PUT) curl -X PUT https://filex.finra.org/files/0001/app1/in/newfile.zip -H "Accept: application/json" -H "Authorization: Bearer

    PUT Request for the pre-signed URL from the fileX API
    https://filex.finra.org/fileX/0001/app1/in/newfile.zip


     

    Sample Response for the pre-signed URL
    
    {
      "url": "https://1422-4800-0760-filex-qa-int.s3.amazonaws.com/79/fZizZcf3%2BYYI%2FuZrapUY%2F5Z%24lqsfOn4%2Bbkj4buGKefeI5IZ0Ew78bh6i7I7gOD9FA7qM2j1ZB%2FSsIkfJnHjfGL1beC8x%2FM3Vu9XpiTOKpemHXdlK9kyep%2FrsPwmFKK6Wp8UGMi1L%2F4BkKr1jLBLX268iYeGXlO2IUgIARg05d9jmRJ9%2BLviuLtAROJfTESifFCw%3D&X-Amz-Signature=7e5b6c1b156c83ff22492855acc714bdd981b34b775dfe07e08ad846d61358b5",
      "expirationTime": "2025-08-23T10:08:42.244-04:00",
      "trackingId": "d3caf6d8-34a4-4b83-9b63-b20dc055286"
    }
    


     

    Python code sample to get the pre-signed URL:  
    
    import base64, requests, sys, json
    
    username = '1234ftp12'
    password = '******'
    # Base64 encode username:password
    userpass = username + ":" + password
    authorization = base64.b64encode(userpass.encode()).decode()
    # Prepare headers for POST call to FIP OAUTH2
    fipRequestHeaders = {
        'Authorization': 'Basic ' + authorization,
    }
    # Make the request to FIP
    fipUrl = 'https://ews.fip.finra.org/fip/rest/ews/oauth2/access_token?grant_type=client_credentials'
    fipResponse = requests.post(fipUrl, headers=fipRequestHeaders)
    fipResponseJson = json.loads(fipResponse.text)
    # Retrieve access token from FIP response
    access_token = fipResponseJson["access_token"]
    # Prepare headers for GET call to fileX API
    fileXRequestHeaders = {
        'Authorization': 'Bearer ' + access_token,
        'Accept': 'application/json',
    }
    fileXUrl = "https://filex.finra.org/files/0001/app1/out/newfile.zip"
    # Make the request
    fileXResponse = requests.get(fileXUrl, headers=fileXRequestHeaders)
    
    

    Step3, cURL to upload the file using pre-signed URL in Step 2 (HTTP Method: PUT): curl –X PUT –T ./newFile.zip 

Supported Applications

This section lists the application sub-spaces and retention policies for the respective applications in fileX. This section will be updated as FINRA applications migrate to fileX service but if any application space you are trying to use is not listed below, please contact FINRA support to get details. 

Key: 

  • Immediately Moved - these files are moved out of the indicated sub-space as soon as they are processed by the downstream applications. There should be no expectation that the files in these application sub-spaces will persist beyond the transfer itself.
  • N days - Number of days for which files will remain in the indicated application sub-space. Files will be removed from the application sub-space after N days have passed.
 App NameApp Space NameSupported Transfer MethodsFile Retention Duration for file Download
1606nms

in,

out

SFTP + HTTPS + S3_DIRECT90 calendar days
2acatsinSFTP + HTTPS + S3_DIRECTN/A 
3adv

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
4aepstockrec

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
5annual_audit_filingoutSFTP + HTTPS + S3_DIRECT30 calendar days
6ats_exempt_trd

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
7bd_auditor_dsclr_feedoutSFTP + HTTPS + S3_DIRECT30 calendar days
8beaconinSFTP + HTTPS + S3_DIRECTN/A
9blotters

data,

legend,

out

SFTP + HTTPS + S3_DIRECT15 calendar days
10blshtsin, outSFTP + HTTPS + S3_DIRECT1 calendar days
11boxoutSFTP + HTTPS + S3_DIRECT90 calendar days
12cboedncinSFTP + HTTPS + S3_DIRECTN/A
13cccs

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days  
14ceplatfm

courseproviders_in, courseproviders_out,

courseresults_in,

courseresults_out,

courses_in,

courses_out,

incidentreports_in

SFTP + HTTPS + S3_DIRECT30 calendar days
15cfportalinSFTP + HTTPS + S3_DIRECT 
16cleansharesinSFTP + HTTPS + S3_DIRECT 
17clmoutSFTP + HTTPS + S3_DIRECT 
18dtcc-fdrinSFTP + HTTPS + S3_DIRECTN/A
19edgar_pdsinSFTP + HTTPS + S3_DIRECTN/A
20erdmdsfundSFTP + HTTPS + S3_DIRECT 
21etf

in,

in_pcf_main,

in_pcf_supp

SFTP + HTTPS + S3_DIRECTN/A
22fdrinSFTP + HTTPS + S3_DIRECTN/A
23firmcontactoutSFTP + HTTPS + S3_DIRECT30 calendar days
24focus

in,

out

SFTP + HTTPS + S3_DIRECT120 calendar days
25FormT

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
26fssinSFTP + HTTPS + S3_DIRECTN/A
27iard

foia_download,

foia_upload

SFTP + HTTPS + S3_DIRECT30 calendar days
28livevolusrinSFTP + HTTPS + S3_DIRECTN/A
29mpp

in,

in2

SFTP + HTTPS + S3_DIRECTN/A
30msrb_avtsinSFTP + HTTPS + S3_DIRECTN/A
31nasdaq_vntvinSFTP + HTTPS + S3_DIRECTN/A
32navinSFTP + HTTPS + S3_DIRECTN/A
33nq_clrginSFTP + HTTPS + S3_DIRECTN/A
34NVXPLYTC

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
35otcinSFTP + HTTPS + S3_DIRECTN/A
36pfrd

file_in,

file_out,

out,

section1To4_report_out,

section5_event_report_out,

section6_event_report_out

SFTP + HTTPS + S3_DIRECT30 calendar days
37otcinSFTP + HTTPS + S3_DIRECTN/A
38pfrd

covered_agency_in,

covered_agency_out,

enhanced_margin_in,

enhanced_margin_out,
in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
39phlxdncinSFTP + HTTPS + S3_DIRECTN/A
40pmap

covered_agency_in,

covered_agency_out,

enhanced_margin_in,

enhanced_margin_out,
in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
41r4530

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
42rdms

incoming,

xbrl

SFTP + HTTPS + S3_DIRECT 
43regm

in,

out

SFTP + HTTPS + S3_DIRECT 
44remainSFTP + HTTPS + S3_DIRECT 
45rex

in,

out 

SFTP + HTTPS + S3_DIRECT 
46rgstrn_submissionoutSFTP + HTTPS + S3_DIRECT30 calendar days
47sbsinSFTP + HTTPS + S3_DIRECT 
48shortinterestoutSFTP + HTTPS + S3_DIRECT30 calendar days
49shorts

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
50slate

feedback,

filings

SFTP + HTTPS + S3_DIRECT30 calendar days
51ssmartinSFTP + HTTPS + S3_DIRECTN/A
52stockrecord

in,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
53tdr

in_ice,

in_ndq,

out

SFTP + HTTPS + S3_DIRECT30 calendar days
54teamconnin SFTP + HTTPS + S3_DIRECTN/A
55thresholdlistoutSFTP + HTTPS + S3_DIRECT30 calendar days
56tradejrnls

agency,

agencyc,

clearing_cds,

clearing_orf,

equity_adf,

equity_orf,

trace_ca,

trace_cb,

trace_cb_144a,

trace_cb_144ac,

trace_cbc,

trace_eod_sp,

trace_eod_spc,

trace_eod_tsds,

trace_eod_tsdsc,

trace_sp,

trace_sp_144a,

trace_sp_144ac,

trace_trsry,

tsar,

tsarc

SFTP + HTTPS 30 calendar days
57trpcy_srvc_erdin_cdsSFTP + HTTPS + S3_DIRECTN/A
58workday

from_vms,

from_workday,

to_vms,

to_workday

SFTP + HTTPS + S3_DIRECT14 calendar days
59wssdmcredregouySFTP + HTTPS + S3_DIRECT30 calendar days