eDiscovery AI API

eDiscovery AI API


The eDiscoveryAI API provides a powerful and streamlined way to integrate your existing systems with our platform to seamlessly submit documents for eDiscovery AI review. Whether you're managing large datasets, automating legal workflows, or simply seeking a more efficient method to handle document uploads, our API simplifies the process. In this guide, we'll walk you through how to connect to the eDiscoveryAI API, submit documents, and ensure they are ready for eDiscovery review quickly and securely.

Authorisation: X-API-KEY header

X-API-KEY = Contact eDiscovery AI to have an API Key created

Step 1 - Create new processing job

Relevancy Review

  1. {
      "job_name": string or None,
      "job_type": "relevancy-review",
      "instance_name": string or None,
      "added_by": string or None,
      "workspace_id": string or None,
      "workspace_name": string or None,
      "general_info": string or None,
      "issues": [
        {
          "name": "Issue 01",
          "description": string
        },
        {
          "name": "Issue 02",
          "description": string
        }
        ...
      ]
    }

PII Detect

Manage your PII template at https://hub.ediscoveryai.com/
  1. {
      "job_name": string or None,
      "job_type": "pii-detect",
      "instance_name": string or None,
      "added_by": string or None,
      "workspace_id": string,
      "workspace_name": string or None
    }

PII Extract

Manage your PII template at https://hub.ediscoveryai.com/

  1. {
      "job_name": string or None,
      "job_type": "pii-extract",
      "instance_name": string or None,
      "added_by": string or None,
      "workspace_id": string,
      "workspace_name": string or None
    }

Privilege Review

  1. {
      "job_name": string or None,
      "job_type": "privilege-review",
      "instance_name": string or None,
      "added_by": string or None,
      "workspace_id": string or None,
      "workspace_name": string or None,
      "privilege": {
        "attorney_list": string, --"John Doe; Jane Doe"
        "safe_domains": string, --"@test.com; @test.org"
        "privilege_types": [
          {"id": 1, "name": "Attorney-Client", "description": ""}, --Leave description blank
          {"id": 2, "name": "Work Product", "description": ""}, --Leave description blank
          {"id": 3, "name": "<name of your custom priv type>", "description": "<description of your custom priv type>"},
          {"id": 4, "name": "<name of your custom priv type>", "description": "<description of your custom priv type>"}
        ]
      }
    }

ECI Review

  1. {
  2. "job_name": string or None,
  3.   "job_type": "eca-review",
      "instance_name": string or None,
      "added_by": string or None,
      "workspace_id": string or None,
      "workspace_name": string or None,
      "eca": {
         "run_case_elements": bool,
         "run_casebot": bool,
         "parent_job_id": string or None,
         "background": string,
         "relevant_desc": string,
         "not_relevant_desc": string
       }
  4. }

Response: 200 with JSON on success
  1. {
  2. "job_id": "test123",
  3. "issues_added": 3,
  4. "azure_path": "https://"
  5. "sas_token": "?"
  6. }

Step 2 - Upload files to Azure blob storage

Step 3 - Start processing job

Response: 200 with empty on success

Step 4 - Ping for results

Response: 200 with JSON on success

Case 1: New processed files - Relevance Review

  1. {
  2.   "job_id": "53db4abb-0ed0-48eb-b9a3-1cc9cd46d45a",
  3.   "number_of_files": 2,
  4.   "results": [{
  5. "file_id": "file_01",
  6.     "filename": "file_01",
  7. "file_content": null, --audio transcription will be here
  8.     "summary": "Dolore consequat nostrud aliquip dolor cillum consectetur quis enim excepteur reprehenderit et minim. Laborum non qui officia deserunt. Dolor incididunt reprehenderit ut sit. Qui non commodo non adipisicing irure ex anim officia eu laboris laboris aute dolor ad excepteur. Ullamco anim sunt eiusmod velit consectetur quis sit tempor elit sit velit. Adipisicing nisi consectetur sit. Incididunt culpa excepteur mollit Lorem in adipisicing labore ad proident nisi velit commodo cupidatat duis.",
  9.     "issues": [{
  10.       "name": "issue_01",
  11.       "result": "NR",
  12.       "explanation": "Est consectetur labore officia et occaecat et culpa. Enim commodo adipisicing enim qui. Dolor fugiat ullamco enim laborum pariatur laboris proident occaecat duis enim eu pariatur ipsum. Voluptate est dolore qui duis ut sit. Elit magna enim enim quis. Pariatur dolore id nisi non culpa labore veniam nisi. Occaecat dolor labore dolor tempor aute. Veniam veniam officia esse est exercitation."
  13.     },{
  14.       "name": "issue_02",
  15.       "result": "NR",
  16.       "explanation": "Dolore eu in Lorem tempor consequat occaecat ullamco eu duis labore occaecat officia officia irure. Tempor deserunt ex nostrud officia est est tempor dolor. Ea occaecat do occaecat consequat ullamco elit excepteur mollit adipisicing laboris. Exercitation veniam adipisicing aliquip ullamco mollit dolor sit anim eiusmod commodo magna. Proident veniam ea eu cillum adipisicing id qui qui cillum. Laborum id laborum commodo minim non. Eu esse do mollit officia voluptate labore nisi eu consectetur nulla mollit mollit velit."
  17.     },{
  18.       "name": "issue_03",
  19.       "result": "NR",
  20.       "explanation": "Ea exercitation amet commodo nulla non reprehenderit. Do commodo elit sit cillum occaecat sit cupidatat sint adipisicing commodo ullamco aliqua ut commodo occaecat. Ex proident veniam minim est est sunt consequat non labore cillum sunt deserunt ipsum. Consectetur et et est qui tempor aliquip eu aliquip consequat sit cupidatat pariatur eiusmod ipsum laboris. Id in cillum esse aliquip magna et eu dolor minim eu velit esse. Dolore mollit voluptate sit excepteur mollit. Exercitation pariatur pariatur enim exercitation elit eu ea in commodo nisi sit. Culpa cillum sint deserunt id duis ex eiusmod exercitation ipsum eu."
  21.     }]
  22.   },{
  23. "file_id": "file_02",
  24.     "filename": "file_02",
  25. "file_content": null, --audio transcription will be here
  26.     "summary": "Dolore consequat nostrud aliquip dolor cillum consectetur quis enim excepteur reprehenderit et minim. Laborum non qui officia deserunt. Dolor incididunt reprehenderit ut sit. Qui non commodo non adipisicing irure ex anim officia eu laboris laboris aute dolor ad excepteur. Ullamco anim sunt eiusmod velit consectetur quis sit tempor elit sit velit. Adipisicing nisi consectetur sit. Incididunt culpa excepteur mollit Lorem in adipisicing labore ad proident nisi velit commodo cupidatat duis.",
  27.     "issues": [{
  28.       "name": "issue_01",
  29.       "result": "R",
  30.       "explanation": "Culpa aute veniam sunt eu consequat qui elit et cupidatat. Ullamco qui sunt cillum. Cillum non Lorem est consectetur duis eu duis aliqua dolor. Non cillum et quis sunt quis aliquip labore nisi do in amet cupidatat reprehenderit nostrud do. Aute amet dolor laborum cupidatat quis veniam eiusmod reprehenderit consectetur ut dolore consectetur nostrud qui quis. Amet esse et laborum voluptate sunt do id voluptate. Sunt sunt enim cupidatat id commodo esse. Ad laborum nostrud in culpa sunt excepteur consectetur non aliquip velit culpa ut fugiat tempor."
  31.     },{
  32.       "name": "issue_02",
  33.       "result": "NR",
  34.       "explanation": "Excepteur nostrud ea commodo duis ut incididunt nulla amet labore est. Elit consequat consectetur consequat duis id pariatur excepteur. Nostrud aute magna ullamco voluptate ullamco pariatur aute eu nostrud in officia veniam commodo. Adipisicing aliqua aliquip exercitation et. Elit do in veniam aliquip."
  35.     },{
  36.       "name": "issue_03",
  37.       "result": "R",
  38.       "explanation": "Consequat in eiusmod exercitation qui tempor consequat culpa sit est ut. Proident elit culpa exercitation deserunt aute esse dolor aliquip Lorem magna veniam. Lorem commodo eu duis. Cupidatat mollit tempor aute adipisicing veniam velit non ullamco voluptate labore."
  39.     }]
  40.   }]
  41. }
Case 2: New processed files - PII Detect
  1. {
        "job_type": "pii-detect",
        "job_id": "jz5qxqrweawf8es7vce",
        "number_of_files": 1,
        "files_uploaded": 1,
        "files_processed": 1,
        "files_sent": 0,
        "results": [
            {
                "file_id": "f24ytjmmprf7cenz7gxge8",
                "filename": "CNTRL0000000001.txt",
                "pii_types": [
                    {
                        "name": "Phone",
                        "result": "No"
                    },
                    {
                        "name": "Email",
                        "result": "Yes"
                    },
                    {
                        "name": "Address",
                        "result": "No"
                    },
                    {
                        "name": "Date of Birth",
                        "result": "No"
                    },
                    {
                        "name": "Social Security Number",
                        "result": "No"
                    }
                ]
            }
      ...
        ]
    }
Case 3: New processed files - PII Extract
  1. {
        "job_type": "pii-extract",
        "job_id": "jg3uqgwn9c3qebw7pbp",
        "number_of_files": 1,
        "files_uploaded": 1,
        "files_processed": 1,
        "files_sent": 0,
        "results": [
            {
                "file_id": "f3c37aqnm3kqpk6vm3b9sa",
                "filename": "CNTRL0000000001.txt",
                "pii_types": [
                    {
                        "name": "Phone",
                        "result": "No"
                    },
                    {
                        "name": "Email",
                        "result": "Yes"
                    },
                    {
                        "name": "Address",
                        "result": "No"
                    },
                    {
                        "name": "Date of Birth",
                        "result": "No"
                    },
                    {
                        "name": "Social Security Number",
                        "result": "No"
                    },
                ],
                "extract_results": {
                    "names": [
                        {
                            "first": "John",
                            "middle": "",
                            "last": "Doe",
                            "pii_data": [
                                {
                                    "pii_type": 6824,
                                    "pii_name": "Email",
                                    "result": "john.doe@test.com"
                                }
                            ]
                        },
                        {
                            "first": "Jane",
                            "middle": "",
                            "last": "Doe",
                            "pii_data": [
                                {
                                    "pii_type": 6824,
                                    "pii_name": "Email",
                                    "result": "jane.doe@test.com"
                                }
                            ]
                        }
                    ]
                },
                "results_status": "Success"
            }
      ...
        ]
    }
Case 4: New processed files - Privilege Review
  1.    {
  2.   "job_type": "privilege-review",
  3.     "job_id": "j5tkutzdcqmga4cxmv6",
  4.     "number_of_files": 4,
  5.     "results": [
  6.         {
  7.             "file_id": "fa4srrwtpmfuqbaugwn6sm",
  8.             "filename": "CNTRL0000000001.txt",
  9.             "priv_results": {
  10.                 "privilege_types": null,
  11.                 "attorney_list": "John Doe",
  12.                 "element_types": null,
  13.                 "privilege_log_entry": "Communication from John Doe regarding employment status.",
  14.                 "result": "Potentially Privileged"
  15.             }
  16.         },
  17.         {
  18.             "file_id": "fdgppnr3cggk9np674vq53",
  19.             "filename": "CNTRL0000000002.txt",
  20.             "priv_results": {
  21.                 "privilege_types": [{"id": 1, "name": "Attorney-Client"}],
  22.                 "attorney_list": "John Doe",
  23.                 "element_types": [{"id": 1,"name": "Attorney Name in Document"},{"id": 2,"name": "Confidential Communication"}],
  24.                 "privilege_log_entry": "Communication from John Doe regarding his departure from Test company.",
  25.                 "result": "Privileged"
  26.             }
  27.         },
  28.         {
  29.             "file_id": "fw7k2ndhcavqrazmmxmrnx",
  30.             "filename": "CNTRL0000000003.txt",
  31.             "priv_results": {
  32.                 "privilege_types": null,
  33.                 "attorney_list": null,
  34.                 "element_types": null,
  35.                 "privilege_log_entry": null,
  36.                 "result": "Not Privileged"
  37.             }
  38.         },
  39.         {
  40.             "file_id": "fw7k2ndhcavqrazmmxmrnx",
  41.             "filename": "CNTRL0000000004.txt",
  42.             "priv_results": {
  43.                 "privilege_types": null,
  44.                 "attorney_list": null,
  45.                 "element_types": null,
  46.                 "privilege_log_entry": null,
  47.                 "result": "Tech Issue"
  48.             }
  49.         }
  50.     ]
  51. }

Case 5: New processed files - ECI Review

  1. {
        "job_type": "eca-review",
        "job_id": "jveskhgcs42shbrtp7p",
        "number_of_files": 1,
        "files_uploaded": 500,
        "files_processed": 500,
        "files_sent": 0,
        "results": [
            {
                "file_id": "f22gxh7yb76xs5hwm463bb",
                "filename": "CNTRL0000000001.txt",
                "buckets": {
                    "subtopics": [
                        {
                            "id": "B1.3",
                            "name": "Expressions of gratitude"
                        },
                        {
                            "id": "B1.7",
                            "name": "Personal meeting arrangements"
                        }
                    ],
                    "subtypes": [
                        {
                            "id": "T1.2",
                            "name": "Personal Correspondence"
                        }
                    ]
                },
                "inappropriate_content": "Profanity; Racism",
                "summary": "This email is from John Doe to Jane Doe discussing xyz",
                "result": "Not Relevant" --Possible: Key, Likely Relevant, Potentially Relevant, Not Relevant, No Content & Tech Issue
            }
        ]
    }

No new processed files (ping again for results)
  1. {
  2.   "job_id": "53db4abb-0ed0-48eb-b9a3-1cc9cd46d45a",
  3.   "number_of_files": 0,
  4.   "results": []
Processing finished (should not ping anymore)
  1. { "job_id": "53db4abb-0ed0-48eb-b9a3-1cc9cd46d45a", "number_of_files": -1, "results": [] }

Step 5 - Confirm receiving results for files

Request: POST → https://api.ediscoveryai.com/jobs/{job_id}/results/

  1. {
  2.  "files": ["file_01", "file_02"] --file_ids
  3. }
Response: 200 with empty on success

Step  6 - Get results for dataset (ECI only)

Request: GET → https://api.ediscoveryai.com/jobs/{job_id}/eca-info/

  1. {
        "status": "processing", --purged
        "job_id": "jveskhgcs42shbrtp7p",
        "doc_types": null,
        "relevant_doc_topics": null,
        "not_relevant_doc_topics": null,
        "narrative": null,
        "inappropriate_content": null,
        "word_cloud": null,
        "timeline": null,
        "people": null,
        "key_buckets": null
    }

  1. {
      "status": "complete",
      "job_id": "jveskhgcs42shbrtp7p",
      "doc_types": [
        {
          "id": "T1",
          "type": "General Email Communications",
          "subtypes": [
            {
              "id": "T1.1",
              "name": "General Updates"
            },
            {
              "id": "T1.2",
              "name": "Personal Correspondence"
            },
            {
              "id": "T1.3",
              "name": "Forwarded Emails"
            }
          ]
        },
        {
          "id": "T2",
          "type": "Official Correspondence and Letters",
          "subtypes": [
            {
              "id": "T2.1",
              "name": "Support Letters"
            },
            {
              "id": "T2.2",
              "name": "Thank You Letters"
            },
            {
              "id": "T2.3",
              "name": "Endorsement Letters"
            },
            {
              "id": "T2.4",
              "name": "Policy Letters"
            }
          ]
        }
      ],
      "relevant_doc_topics": [
        {
          "id": "B1",
          "topic": "Voting Rights and Election Policies",
          "subtopics": [
            {
              "id": "B1.1",
              "name": "Voter Roll Purges"
            },
            {
              "id": "B1.2",
              "name": "Communication with Katherine Harris's Office"
            },
            {
              "id": "B1.3",
              "name": "Disenfranchisement of Minority Voters"
            },
            {
              "id": "B1.4",
              "name": "Early Voting Issues"
            }
          ]
        },
        {
          "id": "B2",
          "topic": "Justice Reform and Sentencing Policies",
          "subtopics": [
            {
              "id": "B2.1",
              "name": "Death Penalty Stance and Policies"
            },
            {
              "id": "B2.2",
              "name": "Changes to Sentencing Guidelines"
            },
            {
              "id": "B2.3",
              "name": "Removal of Civil Rights Safeguards"
            }
          ]
        }
      ],
      "not_relevant_doc_topics": [
        {
          "id": "B1",
          "topic": "Personal Requests and Favors to Governor Bush",
          "subtopics": [
            {
              "id": "B1.1",
              "name": "Appointment requests"
            },
            {
              "id": "B1.2",
              "name": "Recommendations for positions"
            },
            {
              "id": "B1.3",
              "name": "Expressions of gratitude"
            }
          ]
        },
        {
          "id": "B2",
          "topic": "Concerns Over State Investments and Ethical Issues",
          "subtopics": [
            {
              "id": "B2.1",
              "name": "Objections to unethical investments"
            },
            {
              "id": "B2.2",
              "name": "Calls for divestment"
            },
            {
              "id": "B2.3",
              "name": "Advocacy for ethical investment policies"
            },
            {
              "id": "B2.4",
              "name": "Concerns over fund allocations"
            }
          ]
        }
      ],
      "narrative": "This is an example narrative from your eca dataset.",
      "inappropriate_content": [
        "Anger",
        "Fraud",
        "Illegal Activities",
        "Profanity",
        "Racism",
        "Threats"
      ],
      "word_cloud": [
        {
          "text": "school",
          "value": 2465
        },
        {
          "text": "house",
          "value": 946
        },
        {
          "text": "tree",
          "value": 759
        }
      ],
      "timeline": [ --generally between 20-60 events
            {
                "date": "1999-12-08",
                "event": "Event xyz",
                "document": "CNTRL0000000001.txt",
                "important_people": ["John Doe"],
                "explanation": "Explanation for xyz",
                "analysis": "Analysis for xyz"
            },
            {
                "date": "1999-12-10",
                "event": "Event xyzz",
                "document": "CNTRL0000000001.txt; CNTRL0000000002.txt ",
                "important_people": ["Jane Doe"],
                "explanation": "Explanation for xyzz",
                "analysis": "Analysis for xyzz"
            }
            …
      ],
      "people": [ --Around 15 key people
            {
                "name": "John Doe",
                "background": "Background about John Doe",
                "involvement": "Involvement for John Doe in dispute",
                "depo_questions": [ --Around 10 questions
                    {
                        "question": "Question about xyz”,
                        "citation": " CNTRL0000000001.txt"
                    }
                    …
                ]
            }
            …
      ],
      "key_buckets": [ --always 5 buckets for key
            {
                "id": 1,
                "name": "Education Policies"
            },
            {
                "id": 2,
                "name": "OneFlorida & Affirmative Action"
            },
            {
                "id": 3,
                "name": "Voting Laws"
            },
            {
                "id": 4,
                "name": "Workforce & Appointments"
            },
            {
                "id": 5,
                "name": "Justice & Housing"
            }
        ]
    }

Step  7 - Connection requirements

Prior to your first document submission, you will need to provide eDiscovery AI with the originating Public source IP address(es) of your hosting instance. For security purposes, eDiscovery AI restricts communications from all but pre-approved sources. Email support@ediscoveryai.com to have your IP address(es) added to our whitelist. 

      Additionally, you will need an API key for access, support@ediscoveryai.com will be able to provide you that as well. 
  

If you have direct access to your Relativity Agent Server, you may check this with a web browser by going to https://ifconfig.me/


If you are unable to access your hosting servers or if they are not permitted browse the internet, please consult your Network/IT Support to determine the correct public IP address. The IP address we require is not the locally assigned or private address (typically beginning with 192.168 , 172, or 10) but rather the address that is used by a network router or firewall to access the internet at large. 


Your server(s) may be restricted from the internet in some way from a firewall or other security system. 
Please consult with your Network or IT security team to request that this server have access to the following: 


        US / Global 
      UK
       Japan