diff --git a/openstack/identity/v3/endpoints/requests.go b/openstack/identity/v3/endpoints/requests.go
index e3d0eb2..574ded3 100644
--- a/openstack/identity/v3/endpoints/requests.go
+++ b/openstack/identity/v3/endpoints/requests.go
@@ -2,8 +2,11 @@
 
 import (
 	"errors"
+	"strconv"
 
+	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
+	"github.com/rackspace/gophercloud/openstack/utils"
 )
 
 // Interface describes the availability of a specific service endpoint.
@@ -30,8 +33,65 @@
 }
 
 // Create inserts a new Endpoint into the service catalog.
+// Within EndpointOpts, Region may be omitted by being left as "", but all other fields are required.
 func Create(client *gophercloud.ServiceClient, opts EndpointOpts) (*Endpoint, error) {
-	return nil, errors.New("Not implemented")
+	// Redefined so that Region can be re-typed as a *string, which can be omitted from the JSON output.
+	type endpoint struct {
+		Interface string  `json:"interface"`
+		Name      string  `json:"name"`
+		Region    *string `json:"region,omitempty"`
+		URL       string  `json:"url"`
+		ServiceID string  `json:"service_id"`
+	}
+
+	type request struct {
+		Endpoint endpoint `json:"endpoint"`
+	}
+
+	type response struct {
+		Endpoint Endpoint `json:"endpoint"`
+	}
+
+	// Ensure that EndpointOpts is fully populated.
+	if opts.Interface == "" {
+		return nil, ErrInterfaceRequired
+	}
+	if opts.Name == "" {
+		return nil, ErrNameRequired
+	}
+	if opts.URL == "" {
+		return nil, ErrURLRequired
+	}
+	if opts.ServiceID == "" {
+		return nil, ErrServiceIDRequired
+	}
+
+	// Populate the request body.
+	reqBody := request{
+		Endpoint: endpoint{
+			Interface: string(opts.Interface),
+			Name:      opts.Name,
+			URL:       opts.URL,
+			ServiceID: opts.ServiceID,
+		},
+	}
+
+	if opts.Region != "" {
+		reqBody.Endpoint.Region = &opts.Region
+	}
+
+	var respBody response
+	_, err := perigee.Request("POST", getListURL(client), perigee.Options{
+		MoreHeaders: client.Provider.AuthenticatedHeaders(),
+		ReqBody:     &reqBody,
+		Results:     &respBody,
+		OkCodes:     []int{201},
+	})
+	if err != nil {
+		return nil, err
+	}
+
+	return &respBody.Endpoint, nil
 }
 
 // ListOpts allows finer control over the the endpoints returned by a List call.
diff --git a/openstack/identity/v3/endpoints/requests_test.go b/openstack/identity/v3/endpoints/requests_test.go
index 77a2292..7bd6fcf 100644
--- a/openstack/identity/v3/endpoints/requests_test.go
+++ b/openstack/identity/v3/endpoints/requests_test.go
@@ -38,6 +38,7 @@
       }
     `)
 
+		w.WriteHeader(http.StatusCreated)
 		fmt.Fprintf(w, `
       {
         "endpoint": {
@@ -68,7 +69,7 @@
 		t.Fatalf("Unable to create an endpoint: %v", err)
 	}
 
-	expected := Endpoint{
+	expected := &Endpoint{
 		ID:        "12",
 		Interface: InterfacePublic,
 		Name:      "the-endiest-of-points",
