diff --git a/src/main.ml b/src/main.ml
index 34ec82cd5f71de303dab204ef17f7216788ef9e6..9a9b01a8bf3bbd410846a66dfcccf4127ddc394d 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -65,10 +65,10 @@ let config detect () =
            Whyconf.print_prover Pp.nothing)
         provers))
 
-let verify format loadpath memlimit prover files =
+let verify format loadpath memlimit timeout prover files =
   let debug = match Logs.level () with Some Debug -> true | _ -> false in
   List.iter
-    ~f:(Verification.verify ~debug format loadpath ?memlimit ~prover)
+    ~f:(Verification.verify ~debug format loadpath ?memlimit ?timeout ~prover)
     files
 
 let exec_cmd cmdname cmd =
@@ -133,6 +133,10 @@ let verify_cmd =
     let doc = "Memory limit (in megabytes)." in
     Arg.(value & opt (some int) None & info [ "m"; "memlimit" ] ~doc)
   in
+  let timeout =
+    let doc = "Timeout (in seconds)." in
+    Arg.(value & opt (some int) None & info [ "t"; "timeout" ] ~doc)
+  in
   let prover =
     let doc = "Prover to use." in
     Arg.(required & opt (some string) None & info [ "p"; "prover" ] ~doc)
@@ -144,11 +148,11 @@ let verify_cmd =
   let man = [ `S Manpage.s_description; `P doc ] in
   ( Term.(
       ret
-        (const (fun format loadpath memlimit prover files _ ->
+        (const (fun format loadpath memlimit timeout prover files _ ->
            `Ok
              (exec_cmd cmdname (fun () ->
-                verify format loadpath memlimit prover files)))
-        $ format $ loadpath $ memlimit $ prover $ files $ setup_logs)),
+                verify format loadpath memlimit timeout prover files)))
+        $ format $ loadpath $ memlimit $ timeout $ prover $ files $ setup_logs)),
     Term.info cmdname ~sdocs:Manpage.s_common_options ~exits ~doc ~man )
 
 let default_cmd =
diff --git a/src/verification.ml b/src/verification.ml
index 87131c109adfd59d973958a28b1afcf71d6bdb7f..ee4d1ded5ab445aa8c960bf672bc03b03897367c 100644
--- a/src/verification.ml
+++ b/src/verification.ml
@@ -69,12 +69,11 @@ let call_prover ~limit config (prover : Why3.Whyconf.config_prover) driver task
   Fmt.pr "Goal %a: %a@." Pretty.print_pr (Task.task_goal task)
     Call_provers.print_prover_answer answer
 
-let verify ?(debug = false) format loadpath ?memlimit ~prover file =
+let verify ?(debug = false) format loadpath ?memlimit ?timeout ~prover file =
   let open Why3 in
   if debug then Debug.set_flag (Debug.lookup_flag "call_prover");
   let env, config = create_env loadpath in
   let steplimit = None in
-  let timeout = None in
   let steps = match steplimit with Some 0 -> None | _ -> steplimit in
   let limit =
     let memlimit =
diff --git a/src/verification.mli b/src/verification.mli
index fd4c7635bf29a1abae1ad0e7ee74c36fe74663f2..7f53cf82ffcc98413741234db43c5519cfe86cd2 100644
--- a/src/verification.mli
+++ b/src/verification.mli
@@ -9,6 +9,7 @@ val verify :
   string option ->
   string list ->
   ?memlimit:int ->
+  ?timeout:int ->
   prover:string ->
   string ->
   unit
@@ -19,4 +20,5 @@ val verify :
     @param format is the [file] format.
     @param loadpath is the additional loadpath.
     @param memlimit
-      is the memory limit (in megabytes) granted to the verification. *)
+      is the memory limit (in megabytes) granted to the verification.
+    @param timeout is the timeout (in seconds) granted to the verification. *)