Search Storyblok's Documentation
  1. Retrieving Stories from a Folder

Retrieving Stories from a Folder

With the starts_with parameter, it is possible to retrieve stories located in a specific folder. This can be useful to retrieve stories from, for example, an articles or products folder. Moreover, it can be used to conveniently fetch all stories for a particular site when several sites are managed in one space.

Appending the query parameter is_startpage with the value false excludes the story defined as folder root from the response.

  • starts_with=products/

    All stories in the products folder

  • starts_with=articles/&is_startpage=false

    All stories in the articles folder, excluding the story defined as folder root

  • starts_with=website-a/

    All stories from Website A

  • Example Request and Response

    The following example demonstrates how to receive all stories located in the articles folder.

    Request
    curl "https://api.storyblok.com/v2/cdn/stories?starts_with=articles/&version=draft&token=ask9soUkv02QqbZgmZdeDAtt" \
      -X GET \
      -H "Accept: application/json" \
      -H "Content-Type: application/json"
    Request
    // Using the Universal JavaScript Client:
    // https://github.com/storyblok/storyblok-js-client
    Storyblok.get('cdn/stories', {
      "starts_with": "articles/",
      "version": "draft"
    })
      .then(response => {
        console.log(response)
      }).catch(error => { 
        console.log(error)
      })
    Request
    $client = new \Storyblok\Client('YOUR_STORYBLOK_SPACE_ACCESS_TOKEN');
    
    $client->getStories([
      "starts_with" =>  "articles/",
      "version" =>  "draft"
    ])->getBody();
    Request
    require 'storyblok'
    client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
    
    client.stories({:params => {
      "starts_with" =>  "articles/",
      "version" =>  "draft"
    }})
    Request
    HttpResponse<String> response = Unirest.get("https://api.storyblok.com/v2/cdn/stories?starts_with=articles/&version=draft&token=ask9soUkv02QqbZgmZdeDAtt")
      .asString();
    Request
    var client = new RestClient("https://api.storyblok.com/v2/cdn/stories?starts_with=articles/&version=draft&token=ask9soUkv02QqbZgmZdeDAtt");
    var request = new RestRequest(Method.GET);
    
    IRestResponse response = client.Execute(request);
    Request
    import Foundation
    
    let request = NSMutableURLRequest(url: NSURL(string: "https://api.storyblok.com/v2/cdn/stories?starts_with=articles/&version=draft&token=ask9soUkv02QqbZgmZdeDAtt")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)
    request.method = "GET"
    
    let session = URLSession.shared
    let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
      if (error != nil) {
        print(error)
      } else {
        let httpResponse = response as? HTTPURLResponse
        print(httpResponse)
      }
    })
    
    dataTask.resume()
    Request
    import requests
    
    url = "https://api.storyblok.com/v2/cdn/stories"
    
    querystring = {"starts_with":"articles/","version":"draft","token":"ask9soUkv02QqbZgmZdeDAtt"}
    
    payload = ""
    headers = {}
    
    response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
    
    print(response.text)
    Response
    {
      "stories": [
        {
          "name": "Product B",
          "created_at": "2024-03-07T15:43:12.008Z",
          "published_at": "2024-03-07T15:59:51.735Z",
          "id": 457608238,
          "uuid": "278b829e-bde6-48e3-9920-f99d3afe35d3",
          "content": {
            "_uid": "2fe813f5-e86a-4f56-a4ea-e9a9bfdc354c",
            "image": {
              "id": null,
              "alt": null,
              "name": "",
              "focus": null,
              "title": null,
              "source": null,
              "filename": "",
              "copyright": null,
              "fieldtype": "asset",
              "meta_data": {}
            },
            "price": "1799.99",
            "component": "product"
          },
          "slug": "product-b",
          "full_slug": "products/product-b",
          "sort_by_date": null,
          "position": 0,
          "tag_list": ["Product Tag"],
          "is_startpage": false,
          "parent_id": 457608232,
          "meta_data": null,
          "group_id": "bb986ccd-3ad7-448b-9662-27ff49aa7bff",
          "first_published_at": "2024-03-07T15:42:52.308Z",
          "release_id": null,
          "lang": "default",
          "path": null,
          "alternates": [],
          "default_full_slug": null,
          "translated_slugs": null
        },
        {
          "name": "Product A",
          "created_at": "2024-03-07T15:42:27.967Z",
          "published_at": "2024-03-07T15:59:58.325Z",
          "id": 457608234,
          "uuid": "43a86f66-0b12-4653-9ed9-6dbceb85cb60",
          "content": {
            "_uid": "2fe813f5-e86a-4f56-a4ea-e9a9bfdc354c",
            "image": {
              "id": null,
              "alt": null,
              "name": "",
              "focus": null,
              "title": null,
              "source": null,
              "filename": "",
              "copyright": null,
              "fieldtype": "asset",
              "meta_data": {}
            },
            "price": "239.99",
            "component": "product"
          },
          "slug": "product-a",
          "full_slug": "products/product-a",
          "sort_by_date": null,
          "position": 0,
          "tag_list": ["Product Tag"],
          "is_startpage": false,
          "parent_id": 457608232,
          "meta_data": null,
          "group_id": "7eb7a5f8-8d0b-4c4c-9404-262f7d09f910",
          "first_published_at": "2024-03-07T15:42:52.308Z",
          "release_id": null,
          "lang": "default",
          "path": null,
          "alternates": [],
          "default_full_slug": null,
          "translated_slugs": null
        }
      ],
      "cv": 1711039689,
      "rels": [],
      "links": []
    }