---
title: Get Delivery E-URL
slug: fourkites-api-reference/get-delivery-e-url
description: Learn how to use the Get Delivery Tracking URL API to retrieve a shareable eURL for a delivery. This document provides examples of code in different programming languages and explains how to use the API to retrieve a delivery's shareable tracking link.
icon: {"apiMethod":"GET"}
createdAt: 2024-01-01T00:00:00.000Z
---

This API returns a shareable **eURL** for a delivery. The URL can be shared with customers/partners to get detailed information about the delivery and its tracking information.

:::hint{type="info"}
📘 **Token behaviour**

- `templateId` embeds differently into the encrypted token — the same delivery with vs. without `templateId` will produce different token values.
- The `identifierType=deliveryIdentifier` path also produces a different token from the UUID path, since the identifier is embedded in the encrypted payload.
- Each call generates a fresh `requestId` — two calls to the same delivery return different `requestId` values but the same `data` eURL (the token is deterministic for a given delivery + companyId + templateId + identifierType combination).
:::

:::ApiMethodV2
```json
{
  "name": "Get Delivery eURL",
  "method": "GET",
  "url": "https://api.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "Y4dCqNVq5HPjoh9belBiz",
        "language": "curl",
        "code": "curl --location -g --request GET 'https://api.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}' \\\n--header 'apikey: REPLACE_KEY_VALUE'\n",
        "customLabel": ""
      },
      {
        "id": "laBcRexREdCHb-FyCBIsp",
        "language": "java",
        "code": "OkHttpClient client = new OkHttpClient().newBuilder()\n  .build();\nMediaType mediaType = MediaType.parse(\"text/plain\");\nRequestBody body = RequestBody.create(mediaType, \"\");\nRequest request = new Request.Builder()\n  .url(\"https://api.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\")\n  .method(\"GET\", body)\n  .addHeader(\"apikey\", \"REPLACE_KEY_VALUE\")\n  .build();\nResponse response = client.newCall(request).execute();\n",
        "customLabel": ""
      },
      {
        "id": "50eO_mntccxgMsoszFhaz",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"apikey\", \"REPLACE_KEY_VALUE\");\n\nvar requestOptions = {\n  method: 'GET',\n  headers: myHeaders,\n  redirect: 'follow'\n};\n\nfetch(\"https://api.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\", requestOptions)\n  .then(response => response.text())\n  .then(result => console.log(result))\n  .catch(error => console.log('error', error));\n\n",
        "customLabel": ""
      },
      {
        "id": "6Krjpy5cc2pqnmoETTbSN",
        "language": "swift",
        "code": "import Foundation\n#if canImport(FoundationNetworking)\nimport FoundationNetworking\n#endif\n\nvar semaphore = DispatchSemaphore (value: 0)\n\nvar request = URLRequest(url: URL(string: \"https://api.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\")!,timeoutInterval: Double.infinity)\nrequest.addValue(\"REPLACE_KEY_VALUE\", forHTTPHeaderField: \"apikey\")\n\nrequest.httpMethod = \"GET\"\n\nlet task = URLSession.shared.dataTask(with: request) { data, response, error in \n  guard let data = data else {\n    print(String(describing: error))\n    semaphore.signal()\n    return\n  }\n  print(String(data: data, encoding: .utf8)!)\n  semaphore.signal()\n}\n\ntask.resume()\nsemaphore.wait()\n",
        "customLabel": ""
      },
      {
        "id": "8Hy6FJLbFNm90JMEDMI7r",
        "language": "csharp",
        "code": "var client = new RestClient(\"https://api.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\");\nclient.Timeout = -1;\nvar request = new RestRequest(Method.GET);\nrequest.AddHeader(\"apikey\", \"REPLACE_KEY_VALUE\");\nIRestResponse response = client.Execute(request);\nConsole.WriteLine(response.Content);\n",
        "customLabel": ""
      },
      {
        "id": "UT08Pekp61htpi1EiBlVf",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n\n  url := \"https://api.fourkites.com/delivery/%7BdeliveryId%7D/fourkites-tracking-url?identifierType=%7BidentifierType%7D&templateId=%7BtemplateId%7D\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"apikey\", \"REPLACE_KEY_VALUE\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}\n",
        "customLabel": ""
      },
      {
        "id": "f4k5hmeuBgXjyyUPLXfW1",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"apikey\"] = \"REPLACE_KEY_VALUE\"\n\nresponse = https.request(request)\nputs response.read_body\n\n",
        "customLabel": ""
      },
      {
        "id": "5ZEGyd6pE3ykzlclVh_pK",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"api.fourkites.com\")\npayload = ''\nheaders = {\n  'apikey': 'REPLACE_KEY_VALUE'\n}\nconn.request(\"GET\", \"/delivery/{deliveryId}/fourkites-tracking-url?identifierType=%7BidentifierType%7D&templateId=%7BtemplateId%7D\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Y4dCqNVq5HPjoh9belBiz"
  },
  "results": {
    "languages": [
      {
        "id": "kGlshXR0g0vX1Ci6_OdKy",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"data\": \"https://app.fourkites.com/inventory/deliveries/eurl/<encrypted-token>\",\n    \"requestId\": \"550e8400-e29b-41d4-a716-446655440000\"\n}\n\n"
      },
      {
        "id": "kGlshXR0g0vX1Ci6_OdKz",
        "language": "401",
        "customLabel": "",
        "code": "No or invalid credentials."
      },
      {
        "id": "kGlshXR0g0vX1Ci6_OdL0",
        "language": "403",
        "customLabel": "",
        "code": "Authenticated but the JWT principal carries no companyId."
      },
      {
        "id": "kGlshXR0g0vX1Ci6_OdL1",
        "language": "404",
        "customLabel": "",
        "code": "No delivery matching deliveryId exists for the authenticated company."
      },
      {
        "id": "kGlshXR0g0vX1Ci6_OdL2",
        "language": "500",
        "customLabel": "",
        "code": "Internal Server Error"
      }
    ],
    "selectedLanguageId": "kGlshXR0g0vX1Ci6_OdKy"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-delivery-eurl",
  "legacyHash": "cicuv543UTq-RJ7To5DBq"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Get Delivery eURL - Staging",
  "method": "GET",
  "url": "https://api-staging.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "Y4dCqNVq5HPjoh9belBiz",
        "language": "curl",
        "code": "curl --location -g --request GET 'https://api-staging.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}' \\\n--header 'apikey: REPLACE_KEY_VALUE'\n",
        "customLabel": ""
      },
      {
        "id": "laBcRexREdCHb-FyCBIsp",
        "language": "java",
        "code": "OkHttpClient client = new OkHttpClient().newBuilder()\n  .build();\nMediaType mediaType = MediaType.parse(\"text/plain\");\nRequestBody body = RequestBody.create(mediaType, \"\");\nRequest request = new Request.Builder()\n  .url(\"https://api-staging.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\")\n  .method(\"GET\", body)\n  .addHeader(\"apikey\", \"REPLACE_KEY_VALUE\")\n  .build();\nResponse response = client.newCall(request).execute();\n",
        "customLabel": ""
      },
      {
        "id": "50eO_mntccxgMsoszFhaz",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"apikey\", \"REPLACE_KEY_VALUE\");\n\nvar requestOptions = {\n  method: 'GET',\n  headers: myHeaders,\n  redirect: 'follow'\n};\n\nfetch(\"https://api-staging.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\", requestOptions)\n  .then(response => response.text())\n  .then(result => console.log(result))\n  .catch(error => console.log('error', error));\n\n",
        "customLabel": ""
      },
      {
        "id": "6Krjpy5cc2pqnmoETTbSN",
        "language": "swift",
        "code": "import Foundation\n#if canImport(FoundationNetworking)\nimport FoundationNetworking\n#endif\n\nvar semaphore = DispatchSemaphore (value: 0)\n\nvar request = URLRequest(url: URL(string: \"https://api-staging.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\")!,timeoutInterval: Double.infinity)\nrequest.addValue(\"REPLACE_KEY_VALUE\", forHTTPHeaderField: \"apikey\")\n\nrequest.httpMethod = \"GET\"\n\nlet task = URLSession.shared.dataTask(with: request) { data, response, error in \n  guard let data = data else {\n    print(String(describing: error))\n    semaphore.signal()\n    return\n  }\n  print(String(data: data, encoding: .utf8)!)\n  semaphore.signal()\n}\n\ntask.resume()\nsemaphore.wait()\n",
        "customLabel": ""
      },
      {
        "id": "8Hy6FJLbFNm90JMEDMI7r",
        "language": "csharp",
        "code": "var client = new RestClient(\"https://api-staging.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\");\nclient.Timeout = -1;\nvar request = new RestRequest(Method.GET);\nrequest.AddHeader(\"apikey\", \"REPLACE_KEY_VALUE\");\nIRestResponse response = client.Execute(request);\nConsole.WriteLine(response.Content);\n",
        "customLabel": ""
      },
      {
        "id": "UT08Pekp61htpi1EiBlVf",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n\n  url := \"https://api-staging.fourkites.com/delivery/%7BdeliveryId%7D/fourkites-tracking-url?identifierType=%7BidentifierType%7D&templateId=%7BtemplateId%7D\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"apikey\", \"REPLACE_KEY_VALUE\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}\n",
        "customLabel": ""
      },
      {
        "id": "f4k5hmeuBgXjyyUPLXfW1",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api-staging.fourkites.com/delivery/{deliveryId}/fourkites-tracking-url?identifierType={identifierType}&templateId={templateId}\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"apikey\"] = \"REPLACE_KEY_VALUE\"\n\nresponse = https.request(request)\nputs response.read_body\n\n",
        "customLabel": ""
      },
      {
        "id": "5ZEGyd6pE3ykzlclVh_pK",
        "language": "python",
        "code": "import http.client\n\nconn = http.client.HTTPSConnection(\"api-staging.fourkites.com\")\npayload = ''\nheaders = {\n  'apikey': 'REPLACE_KEY_VALUE'\n}\nconn.request(\"GET\", \"/delivery/{deliveryId}/fourkites-tracking-url?identifierType=%7BidentifierType%7D&templateId=%7BtemplateId%7D\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Y4dCqNVq5HPjoh9belBiz"
  },
  "results": {
    "languages": [
      {
        "id": "kGlshXR0g0vX1Ci6_OdKy",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"data\": \"https://app.fourkites.com/inventory/deliveries/eurl/<encrypted-token>\",\n    \"requestId\": \"550e8400-e29b-41d4-a716-446655440000\"\n}\n\n"
      },
      {
        "id": "kGlshXR0g0vX1Ci6_OdKz",
        "language": "401",
        "customLabel": "",
        "code": "No or invalid credentials."
      },
      {
        "id": "kGlshXR0g0vX1Ci6_OdL0",
        "language": "403",
        "customLabel": "",
        "code": "Authenticated but the JWT principal carries no companyId."
      },
      {
        "id": "kGlshXR0g0vX1Ci6_OdL1",
        "language": "404",
        "customLabel": "",
        "code": "No delivery matching deliveryId exists for the authenticated company."
      },
      {
        "id": "kGlshXR0g0vX1Ci6_OdL2",
        "language": "500",
        "customLabel": "",
        "code": "Internal Server Error"
      }
    ],
    "selectedLanguageId": "kGlshXR0g0vX1Ci6_OdKy"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-delivery-eurl-staging",
  "legacyHash": "yMpNCbWBER_51cQP4FIYA"
}
```
:::

### Request Attributes

| Name             | Param Type | Format | Default                    | Description                                                                                                                                   |
| ---------------- | ---------- | ------ | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `deliveryId`     | Path       | String | NA                         | FourKites delivery UUID (PK) or delivery identifier string. Required.                                                                         |
| `identifierType` | Query      | String | Auto-detected              | Resolution hint. `deliveryId` forces UUID/PK lookup; `deliveryIdentifier` forces identifier string lookup. Omit for auto-detection. Optional. |
| `templateId`     | Query      | String | Company's default template | FourKites-generated identifier for an eURL template. Optional.                                                                                |

### Response Attributes

| Name        | Format                    | Default | Description                                                                                                      |
| ----------- | ------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
| `data`      | String. Fully formed URL. | NA      | Shareable delivery eURL. Path contains `/inventory/deliveries/eurl/`. Can be shared or embedded in HTML iframes. |
| `requestId` | String (UUID)             | NA      | Per-request correlation ID — unique on every call, written to MDC (searchable in Kibana).                        |

