# Redirect A redirect causes a visitor on a specific path on the shop's site to be automatically sent to a different location, called the target. The target can be a new path on the shop's site or a full URL. The new URL can even be on a completely different domain. Redirect paths are unique, so a shop can't have more than one redirect with the same path. ## Resource Properties ### Redirect * id: The ID for the redirect. * Type: x-string * Example: 304339089 * path: The old path to be redirected. When the user visits this path, they will be redirected to the target. (maximum: 1024 characters) * Type: x-string * Example: "/products.php" * target: The target location where the user will be redirected. When the user visits the old path specified by the path property, they will be redirected to this location. This property can be set to any path on the shop's site, or to an external URL. (maximum: 255 characters) * Type: x-string * Example: "/products" ## Retrieves a list of URL redirects Retrieves a list of URL redirects. Note: This endpoint implements pagination by using links that are provided in the response header. To learn more, refer to Make paginated requests to the REST Admin API. ### Endpoint /admin/api/#{api_version}/redirects.json?since_id=668809255 (GET) ### Parameters * api_version (required): * fields: Show only certain fields, specified by a comma-separated list of field names. * limit: The maximum number of results to show. * path: Show redirects with a given path. * since_id: Restrict results to after the specified ID. * target: Show redirects with a given target. ### Responses #### 200 Retrieves a list of URL redirects Examples: ##### Retrieve a list of URL redirects after a specified ID Request: ``` GET /admin/api/unstable/redirects.json ``` Response: ``` HTTP/1.1 200 OK {"redirects":[{"id":950115854,"path":"/ibook","target":"/products/macbook"}]} ``` ##### Retrieve a list of all redirects Request: ``` GET /admin/api/unstable/redirects.json ``` Response: ``` HTTP/1.1 200 OK {"redirects":[{"id":304339089,"path":"/products.php","target":"/products"},{"id":668809255,"path":"/leopard","target":"/pages/macosx"},{"id":950115854,"path":"/ibook","target":"/products/macbook"}]} ``` ## Retrieves a count of URL redirects Retrieves a count of URL redirects ### Endpoint /admin/api/#{api_version}/redirects/count.json (GET) ### Parameters * api_version (required): * path: Count redirects with given path. * target: Count redirects with given target. ### Responses #### 200 Retrieves a count of URL redirects Examples: ##### Count all redirects Request: ``` GET /admin/api/unstable/redirects/count.json ``` Response: ``` HTTP/1.1 200 OK {"count":3} ``` ## Retrieves a single redirect Retrieves a single redirect ### Endpoint /admin/api/#{api_version}/redirects/{redirect_id}.json (GET) ### Parameters * api_version (required): * redirect_id (required): * fields: Show only certain fields, specified by a comma-separated list of field names. ### Responses #### 200 Retrieves a single redirect Examples: ##### Retrieve a single redirect by its ID Request: ``` GET /admin/api/unstable/redirects/668809255.json ``` Response: ``` HTTP/1.1 200 OK {"redirect":{"id":668809255,"path":"/leopard","target":"/pages/macosx"}} ``` ## Updates an existing redirect Updates an existing [redirect](https://shopify.dev/api/admin-rest/latest/resources/redirect) ### Endpoint /admin/api/#{api_version}/redirects/{redirect_id}.json (PUT) ### Parameters * api_version (required): * redirect_id (required): ### Responses #### 200 Updates an existing redirect Examples: ##### Update both the source (path) and target URIs of a redirect Request: ``` PUT /admin/api/unstable/redirects/950115854.json {"redirect":{"id":950115854,"path":"/powermac","target":"/pages/macpro"}} ``` Response: ``` HTTP/1.1 200 OK {"redirect":{"path":"/powermac","target":"/pages/macpro","id":950115854}} ``` ##### Update the source (path) URI of a redirect Request: ``` PUT /admin/api/unstable/redirects/668809255.json {"redirect":{"id":668809255,"path":"/tiger"}} ``` Response: ``` HTTP/1.1 200 OK {"redirect":{"path":"/tiger","target":"/pages/macosx","id":668809255}} ``` ##### Update the target URI of a redirect Request: ``` PUT /admin/api/unstable/redirects/668809255.json {"redirect":{"id":668809255,"target":"/pages/macpro"}} ``` Response: ``` HTTP/1.1 200 OK {"redirect":{"target":"/pages/macpro","path":"/leopard","id":668809255}} ``` ## Deletes a redirect Deletes a redirect ### Endpoint /admin/api/#{api_version}/redirects/{redirect_id}.json (DELETE) ### Parameters * api_version (required): * redirect_id (required): ### Responses #### 200 Deletes a redirect Examples: ##### Delete an existing redirect Request: ``` DELETE /admin/api/unstable/redirects/668809255.json ``` Response: ``` HTTP/1.1 200 OK {} ``` ## Creates a redirect Creates a redirect. When you provide a full URL as the value of the path property, it will be saved as an absolute path without the domain. For example, "path": "http://www.example.com/springwear" will be saved as "path": "springwear". ### Endpoint /admin/api/#{api_version}/redirects.json (POST) ### Parameters * api_version (required): ### Responses #### 201 Creates a redirect Examples: ##### Create a redirect Request: ``` POST /admin/api/unstable/redirects.json {"redirect":{"path":"/ipod","target":"/pages/itunes"}} ``` Response: ``` HTTP/1.1 201 Created {"redirect":{"id":984542200,"path":"/ipod","target":"/pages/itunes"}} ``` ##### Create a redirect using a full URL for the path, which will be saved as an absolute path without a domain Request: ``` POST /admin/api/unstable/redirects.json {"redirect":{"path":"http://www.apple.com/forums","target":"http://forums.apple.com"}} ``` Response: ``` HTTP/1.1 201 Created {"redirect":{"id":984542199,"path":"/forums","target":"http://forums.apple.com/"}} ``` #### 422 Creates a redirect Examples: ##### Creating a redirect without a path or target fails and returns an error Request: ``` POST /admin/api/unstable/redirects.json {"redirect":{"body":"foobar"}} ``` Response: ``` HTTP/1.1 422 Unprocessable Entity {"errors":{"path":["can't be blank"],"target":["can't be blank","can't be the same as path"]}} ```