diff --git a/acceptance/11-rescue-unrescue-server.go b/acceptance/11-rescue-unrescue-server.go
new file mode 100644
index 0000000..4c4d481
--- /dev/null
+++ b/acceptance/11-rescue-unrescue-server.go
@@ -0,0 +1,50 @@
+package main
+
+import (
+	"fmt"
+	"flag"
+	"github.com/rackspace/gophercloud"
+)
+
+var quiet = flag.Bool("quiet", false, "Quiet mode, for acceptance testing.  $? still indicates errors though.")
+
+func main() {
+	flag.Parse()
+	withIdentity(false, func(acc gophercloud.AccessProvider) {
+		withServerApi(acc, func(servers gophercloud.CloudServersProvider) {
+			log("Creating server")
+			id, err := createServer(servers, "", "", "", "")
+			if err != nil {
+				panic(err)
+			}
+			waitForServerState(servers, id, "ACTIVE")
+			defer servers.DeleteServerById(id)
+
+			log("Rescuing server")
+			adminPass, err := servers.RescueServer(id)
+			if err != nil {
+				panic(err)
+			}
+			log("  Admin password = " + adminPass)
+			if len(adminPass) < 1 {
+				panic("Empty admin password")
+			}
+			waitForServerState(servers, id, "RESCUE")
+
+			log("Unrescuing server")
+			err = servers.UnrescueServer(id)
+			if err != nil {
+				panic(err)
+			}
+			waitForServerState(servers, id, "ACTIVE")
+
+			log("Done")
+		})
+	})
+}
+
+func log(s string) {
+	if !*quiet {
+		fmt.Println(s)
+	}
+}
diff --git a/interfaces.go b/interfaces.go
index e05bdc4..2bb8ac5 100644
--- a/interfaces.go
+++ b/interfaces.go
@@ -36,6 +36,8 @@
 	RevertResize(id string) error
 	ConfirmResize(id string) error
 	RebootServer(id string, hard bool) error
+	RescueServer(id string) (string, error)
+	UnrescueServer(id string) error
 
   // Images
 
diff --git a/servers.go b/servers.go
index c1026b4..6b97f05 100644
--- a/servers.go
+++ b/servers.go
@@ -210,6 +210,43 @@
 	})
 }
 
+// See the CloudServersProvider interface for details
+func (gsp *genericServersProvider) RescueServer(id string) (string, error) {
+	var pw *string
+
+	err := gsp.context.WithReauth(gsp.access, func() error {
+		url := fmt.Sprintf("%s/servers/%s/action", gsp.endpoint, id)
+		return perigee.Post(url, perigee.Options{
+			ReqBody: &struct{
+				Rescue string `json:"rescue"`
+			}{"none"},
+			MoreHeaders: map[string]string{
+				"X-Auth-Token": gsp.access.AuthToken(),
+			},
+			Results: &struct{
+				AdminPass **string `json:"adminPass"`
+			}{&pw},
+		})
+	})
+	return *pw, err
+}
+
+// See the CloudServersProvider interface for details
+func (gsp *genericServersProvider) UnrescueServer(id string) error {
+	return gsp.context.WithReauth(gsp.access, func() error {
+		url := fmt.Sprintf("%s/servers/%s/action", gsp.endpoint, id)
+		return perigee.Post(url, perigee.Options{
+			ReqBody: &struct{
+				Unrescue *int `json:"unrescue"`
+			}{nil},
+			MoreHeaders: map[string]string{
+				"X-Auth-Token": gsp.access.AuthToken(),
+			},
+			OkCodes: []int{202},
+		})
+	})
+}
+
 // RaxBandwidth provides measurement of server bandwidth consumed over a given audit interval.
 type RaxBandwidth struct {
 	AuditPeriodEnd    string `json:"audit_period_end"`
