diff --git a/docs/metadata/validate_codemeta.ipynb b/docs/metadata/validate_codemeta.ipynb
index e5af8e15fa8307b0fde319f8b7dc1ead3b28e98c..a0b87aa6d4c0bbf48ecd7427de77ca72ad864ea6 100644
--- a/docs/metadata/validate_codemeta.ipynb
+++ b/docs/metadata/validate_codemeta.ipynb
@@ -29,6 +29,7 @@
     "import ipywidgets as widgets\n",
     "from eossr.metadata import codemeta\n",
     "from eossr.metadata import codemeta2zenodo\n",
+    "from eossr.api import Record\n",
     "import json"
    ]
   },
@@ -68,6 +69,27 @@
     "        \n",
     "load_button.on_click(load)\n",
     " \n",
+    "    \n",
+    "## FROM ZENODO RECORD\n",
+    "\n",
+    "def read_from_record_id(record_id):\n",
+    "    rec = Record.from_id(record_id)\n",
+    "    meta = rec.get_codemeta()\n",
+    "    return meta\n",
+    "\n",
+    "record_id = widgets.IntText(description=\"Record ID:\",\n",
+    "                            layout=widgets.Layout(width='300px')\n",
+    "                           )\n",
+    "\n",
+    "load_record_button = widgets.Button(description=\"Load\")\n",
+    "\n",
+    "def load_record(b):\n",
+    "    try:\n",
+    "        text.value = str(json.dumps(read_from_record_id(record_id.value), indent=4))\n",
+    "    except:\n",
+    "        text.value = f\"Could not get codemeta from record {record_id.value}\"\n",
+    "\n",
+    "load_record_button.on_click(load_record)\n",
     "\n",
     "## FROM UPLOAD\n",
     "\n",
@@ -98,8 +120,8 @@
     "                    \n",
     "    except json.JSONDecodeError:\n",
     "        output.value = \"Invalid JSON input\"\n",
-    "    except:\n",
-    "        output.value = \"There is an error, this can't be processed.\"\n",
+    "    except Exception as e:\n",
+    "        output.value = f\"Error `{e}`, this can't be processed.\"\n",
     "        \n",
     "validate_button.on_click(validate)\n",
     "\n",
@@ -139,12 +161,19 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "print(\"Load codemeta from a json file\\n\")\n",
+    "print(\"Load codemeta from a \\033[95mjson file\\n\")\n",
     "display(upload)\n",
     "display(load_label)\n",
+    "print(\"\\n\")\n",
+    "\n",
     "\n",
+    "blue='\\033[94m'\n",
+    "print(f\"Load codemeta from a \\033[94mZenodo record ID\\n\")\n",
+    "display(record_id)\n",
+    "display(load_record_button)\n",
     "print(\"\\n\")\n",
-    "print(\"Load codemeta from an URL\\n\")\n",
+    "\n",
+    "print(\"Load codemeta from an \\033[93mURL\\n\")\n",
     "display(url)\n",
     "display(load_button)\n",
     "print(\"\\n\")\n",