diff --git a/api/GenApi.py b/api/GenApi.py
index 51d9a9a90911108e6b71594d75e65d355e8b54cd..90667ab6bf0f89e78985d255f2d6f5ebbb157d1c 100644
--- a/api/GenApi.py
+++ b/api/GenApi.py
@@ -1166,10 +1166,14 @@ def _ivectordouble(o):
 def _ivectorpair(o):
     if use_numpy:
         array = numpy.ascontiguousarray(o, numpy.int32)
+        if(len(o) and (array.ndim != 2 or array.shape[1] != 2)):
+            raise Exception("Invalid data for input vector of pairs")
         ct = array.ctypes
         ct.array = array
-        return  ct, c_size_t(len(o) * 2)
+        return ct, c_size_t(len(o) * 2)
     else:
+        if(len(o) and len(o[0]) != 2):
+            raise Exception("Invalid data for input vector of pairs")
         return ((c_int * 2) * len(o))(*o), c_size_t(len(o) * 2)
 
 def _ivectorstring(o):
diff --git a/api/gmsh.py b/api/gmsh.py
index e25a820513c6d3d3ee17bc2d1f3e1f5c0b1a7ff9..f88a06bd6bc729d85246a9f18de68f0e4e0adbb9 100644
--- a/api/gmsh.py
+++ b/api/gmsh.py
@@ -150,10 +150,14 @@ def _ivectordouble(o):
 def _ivectorpair(o):
     if use_numpy:
         array = numpy.ascontiguousarray(o, numpy.int32)
+        if(len(o) and (array.ndim != 2 or array.shape[1] != 2)):
+            raise Exception("Invalid data for input vector of pairs")
         ct = array.ctypes
         ct.array = array
-        return  ct, c_size_t(len(o) * 2)
+        return ct, c_size_t(len(o) * 2)
     else:
+        if(len(o) and len(o[0]) != 2):
+            raise Exception("Invalid data for input vector of pairs")
         return ((c_int * 2) * len(o))(*o), c_size_t(len(o) * 2)
 
 def _ivectorstring(o):