---
title: Retrieve a Single Link
description: Retrieve a single link object by its UUID.
url: https://www.storyblok.com/docs/api/content-delivery/v2/links/retrieve-a-single-link
---

# Retrieve a Single Link

Retrieve a single link object by its UUID.

GET

```html
https://api.storyblok.com/v2/cdn/links/:id
```

## Path parameters

-   `:id` (required) (string)
    
    The link’s ID.
    

## Query parameters

-   `cv` (integer)
    
    Cached version Unix timestamp. Learn more in the [Caching concept](https://www.storyblok.com/docs/concepts/caching).
    
-   `include_dates` (string)
    
    Include or exclude the `created_at`, `updated_at` and `published_at` fields. To include these date fields in the response, set to `1`. To exclude them, set to `0` or omit the parameter.
    
-   `token` (required) (string)
    
    A preview or public [access token](https://www.storyblok.com/docs/concepts/access-tokens) configured in a space.
    

## Response properties

-   `link` (Link)
    
    Show child properties
    
    -   `id` (integer)
        
        Story or folder `id`.
        
    -   `uuid` (string)
        
        Story or folder `uuid`.
        
    -   `slug` (string)
        
        Story or folder full slug.
        
    -   `path` (string | null)
        
        Real path defined in the story’s entry configuration. Learn more in the [Visual Editor concept](https://www.storyblok.com/docs/concepts/visual-editor)).
        
    -   `real_path` (string | null)
        
        Either the full slug of the story or folder with a leading `/`, or the value of the real path defined in the story’s entry configuration with a leading `/`.
        
    -   `name` (string)
        
        Story or folder name.
        
    -   `published` (boolean)
        
        Returns `true` if the story is currently published.
        
    -   `parent_id` (integer)
        
        Parent folder ID.
        
    -   `is_folder` (boolean)
        
        Returns `true` if the item is a folder.
        
    -   `is_startpage` (boolean)
        
        Returns `true` if the story is the folder’s root.
        
    -   `position` (integer)
        
        Numeric representation of the story’s position in the folder. Users [can change](https://www.storyblok.com/docs/manuals/stories#folders) this property in the **Content** tab.
        
    -   `published_at` (string | null)
        
        Latest publication timestamp. Supports ISO 8601.
        
    -   `created_at` (string | null)
        
        Creation timestamp. Supports ISO 8601.
        
    -   `updated_at` (string | null)
        
        Latest update timestamp. Supports ISO 8601.
        
    -   `alternates` (array<Alternate>)
        
        An array that contains objects correlating to the language versions defined using [field-level translation](https://www.storyblok.com/docs/concepts/internationalization#field-level-translation).
        
        The `alternates` parameter is different from the story alternates defined in the [Dimensions app](https://www.storyblok.com/apps/locales) when using [folder-level translation](https://www.storyblok.com/docs/concepts/internationalization#folder-level-translation).
        
        Show child properties
        
        -   `path` (string)
            
            Translated story slug (learn more about the [Translatable Slugs app](https://www.storyblok.com/apps/translatable-slugs)).
            
        -   `name` (string)
            
            Translated story name (learn more about the [Translatable Slugs app](https://www.storyblok.com/apps/translatable-slugs)).
            
        -   `lang` (string)
            
            The story’s language code.
            
        -   `published` (boolean)
            
            Returns `true` if story language version is currently published.
            
        -   `translated_slug` (string)
            
            Translated story slug (learn more about the [Translatable Slugs app](https://www.storyblok.com/apps/translatable-slugs)).
            
        
    

## Examples

-   cURL
    
    ```shellscript
    curl "https://api.storyblok.com/v2/cdn/links/:id\
    ?version=published\
    &starts_with=articles\
    &token=YOUR_ACCESS_TOKEN"
    ```
    
-   JS
    
    ```javascript
    // storyblok-js-client@>=7, node@>=18
    import Storyblok from "storyblok-js-client";
    
    const storyblok = new Storyblok({
      accessToken: "krcV6QGxWORpYLUWt12xKQtt",
    });
    
    try {
      const response = await storyblok.get('cdn/links/:id', {
        "version": "published",
        "starts_with": "articles"
      })
      console.log({ response })
    } catch (error) {
      console.log(error)
    }
    ```
    
-   PHP
    
    ```php
    $client = new \Storyblok\Client('YOUR_STORYBLOK_SPACE_ACCESS_TOKEN');
    
    $client->getLinks([
      "version" => "published",
      "starts_with" => "articles"
    ])->getBody();
    ```
    
-   Java
    
    ```java
    HttpResponse<String> response = Unirest.get("https://api.storyblok.com/v2/cdn/links/:id?version=published&starts_with=articles&token=YOUR_ACCESS_TOKEN")
      .asString();
    ```
    
-   C#
    
    ```csharp
    var client = new RestClient("https://api.storyblok.com/v2/cdn/links/:id?version=published&starts_with=articles&token=YOUR_ACCESS_TOKEN");
    var request = new RestRequest(Method.GET);
    
    IRestResponse response = client.Execute(request);
    ```
    
-   Python
    
    ```python
    import requests
    
    url = "https://api.storyblok.com/v2/cdn/links/:id"
    
    querystring = {"version":"published","starts_with":"articles","token":"YOUR_ACCESS_TOKEN"}
    
    payload = ""
    headers = {}
    
    response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
    
    print(response.text)
    ```
    
-   Ruby
    
    ```ruby
    require 'storyblok'
    client = Storyblok::Client.new(token: 'YOUR_TOKEN')
    
    client.links({:params => {
      "version" => "published",
      "starts_with" => "articles"
    }})
    ```
    
-   Swift
    
    ```swift
    let storyblok = URLSession(storyblok: .cdn(accessToken: "YOUR_ACCESS_TOKEN"))
    var request = URLRequest(storyblok: storyblok, path: "links/:id")
    request.url!.append(queryItems: [
        URLQueryItem(name: "version", value: "published"),
        URLQueryItem(name: "starts_with", value: "articles")
    ])
    let (data, _) = try await storyblok.data(for: request)
    print(try JSONSerialization.jsonObject(with: data))
    ```
    
-   Kotlin
    
    ```kotlin
    val client = HttpClient {
        install(Storyblok(CDN)) {
            accessToken = "YOUR_ACCESS_TOKEN"
        }
    }
    
    val response = client.get("links/:id") {
        url {
            parameters.append("version", "published")
            parameters.append("starts_with", "articles")
        }
    }
    
    println(response.body<JsonElement>())
    ```

Response

```json
{
"link": {
  "id": 371891025,
  "uuid": "a78b2116-c26d-4d23-9cbe-fec477847b0e",
  "slug": "home",
  "path": null,
  "real_path": "/home",
  "name": "Home",
  "published": true,
  "parent_id": 0,
  "is_folder": false,
  "is_startpage": true,
  "position": 0,
  "published_at": "2025-01-15T09:32:10.000Z",
  "created_at": "2025-01-15T09:30:00.000Z",
  "updated_at": "2025-06-02T14:12:05.000Z",
  "alternates": []
}
}
```

## Pagination

-   [Previous: Filtering Stories by Defining a Value Range](/docs/api/content-delivery/v2/filter-queries/examples/filtering-stories-by-defining-a-value-range)
-   [Next: Retrieve Multiple Links](/docs/api/content-delivery/v2/links/retrieve-multiple-links)
