Turns out /endpoints *is* paginated with links.
diff --git a/openstack/identity/v3/endpoints/requests.go b/openstack/identity/v3/endpoints/requests.go
index b5b38fc..97cc3cf 100644
--- a/openstack/identity/v3/endpoints/requests.go
+++ b/openstack/identity/v3/endpoints/requests.go
@@ -125,7 +125,7 @@
 
 	u := getListURL(client) + utils.BuildQuery(q)
 
-	var respBody []Endpoint
+	var respBody EndpointList
 	_, err := perigee.Request("GET", u, perigee.Options{
 		MoreHeaders: client.Provider.AuthenticatedHeaders(),
 		Results:     &respBody,
@@ -135,7 +135,7 @@
 		return nil, err
 	}
 
-	return &EndpointList{Endpoints: respBody}, nil
+	return &respBody, nil
 }
 
 // Update changes an existing endpoint with new data.