diff --git a/rackspace/autoscale/v1/policies/requests.go b/rackspace/autoscale/v1/policies/requests.go
index bc7a8fe..52061a1 100644
--- a/rackspace/autoscale/v1/policies/requests.go
+++ b/rackspace/autoscale/v1/policies/requests.go
@@ -11,7 +11,9 @@
 var (
 	ErrNoName            = errors.New("Policy name cannot by empty.")
 	ErrNoArgs            = errors.New("Args cannot be nil for schedule policies.")
-	ErrInvalidAdjustment = errors.New("Invalid adjustment type.")
+	ErrCooldownRange     = errors.New("Cooldown is out of range (0, 86400).")
+	ErrUnknownType       = errors.New("Unknown policy type.")
+	ErrUnknownAdjustment = errors.New("Unknown adjustment type.")
 )
 
 // List returns all scaling policies for a group.
@@ -73,6 +75,14 @@
 			return nil, ErrNoArgs
 		}
 
+		if ok := validateType(o.Type); !ok {
+			return nil, ErrUnknownType
+		}
+
+		if ok := validateCooldown(o.Cooldown); !ok {
+			return nil, ErrCooldownRange
+		}
+
 		policy := make(map[string]interface{})
 
 		policy["name"] = o.Name
@@ -166,6 +176,14 @@
 		return nil, ErrNoArgs
 	}
 
+	if ok := validateType(opts.Type); !ok {
+		return nil, ErrUnknownType
+	}
+
+	if ok := validateCooldown(opts.Cooldown); !ok {
+		return nil, ErrCooldownRange
+	}
+
 	policy := make(map[string]interface{})
 
 	policy["name"] = opts.Name
@@ -240,8 +258,30 @@
 		body[key] = int(v)
 
 	default:
-		return ErrInvalidAdjustment
+		return ErrUnknownAdjustment
 	}
 
 	return nil
 }
+
+func validateType(t Type) (ok bool) {
+	switch t {
+	case Schedule, Webhook:
+		ok = true
+		return
+
+	default:
+		ok = false
+		return
+	}
+}
+
+func validateCooldown(cooldown int) (ok bool) {
+	if cooldown < 0 || cooldown > 86400 {
+		ok = false
+		return
+	}
+
+	ok = true
+	return
+}
