diff --git a/swh/model/model.py b/swh/model/model.py
index 776f729e33e783dd80d54a120f865dab7d8eb425..b741ae7c9232db2d75a7a7aa7fec6935b07671ca 100644
--- a/swh/model/model.py
+++ b/swh/model/model.py
@@ -341,8 +341,10 @@ class Content(BaseModel):
     @length.validator
     def check_length(self, attribute, value):
         """Checks the length is positive."""
-        if value < 0:
-            raise ValueError('Length must be positive.')
+        if self.status == 'absent' and value < -1:
+            raise ValueError('Length must be positive or -1.')
+        elif self.status != 'absent' and value < 0:
+            raise ValueError('Length must be positive, unless status=absent.')
 
     @reason.validator
     def check_reason(self, attribute, value):