diff --git a/src/friendlypins/api.py b/src/friendlypins/api.py
index 120116c..92b4475 100644
--- a/src/friendlypins/api.py
+++ b/src/friendlypins/api.py
@@ -2,10 +2,11 @@
 import logging
 from friendlypins.user import User
 from friendlypins.board import Board
+from friendlypins.pin import Pin
 from friendlypins.utils.rest_io import RestIO
 
 
-class API(object):  # pylint: disable=too-few-public-methods
+class API(object):
     """High level abstraction for the core Pinterest API"""
 
     def __init__(self, personal_access_token):
@@ -35,6 +36,23 @@ class API(object):  # pylint: disable=too-few-public-methods
         board_url = "boards/{0}".format(board_id)
         return Board(board_url, self._io)
 
+    def get_pin_by_id(self, pin_id):
+        """Locates a specific Pinterest pin given it's internal identifier
+
+        NOTE: this API assumes that the ID provided references a valid pin.
+        If it does not, the object returned will be invalid and any attempts
+        to access data from the pin will result in an error.
+
+        Args:
+            pin_id (int):
+                the unique identifier for the board
+
+        Returns:
+            Pin: reference to the Pinterest pin
+        """
+        pin_url = "pins/{0}".format(pin_id)
+        return Pin(pin_url, self._io)
+
     @property
     def user(self):
         """User: Gets all primitives associated with the authenticated user"""

add helper method to retrieve a specific pin based on its ID
In order to use the Pinterest REST API more efficiently I want to add support for loading data for a specific pin directly with just its unique identifier, lazy loading REST API data when needed.
diff --git a/tests/test_api.py b/tests/test_api.py
index 026b261..5c2e0b0 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -1,5 +1,7 @@
 import mock
 from friendlypins.api import API
+from friendlypins.board import Board
+from friendlypins.pin import Pin
 from dateutil import tz
 
 
@@ -30,6 +32,30 @@ def test_get_user():
         assert expected_id == result.unique_id
 
 
+@mock.patch("friendlypins.utils.rest_io.requests")
+def test_get_board_by_id(mock_requests):
+    mock_response = mock.MagicMock()
+    mock_requests.get.return_value = mock_response
+
+    obj = API("abcd1234")
+    result = obj.get_board_by_id("1234")
+    assert result is not None
+    assert isinstance(result, Board)
+    assert mock_requests.get.call_count == 0
+
+
+@mock.patch("friendlypins.utils.rest_io.requests")
+def test_get_pin_by_id(mock_requests):
+    mock_response = mock.MagicMock()
+    mock_requests.get.return_value = mock_response
+
+    obj = API("abcd1234")
+    result = obj.get_pin_by_id("1234")
+    assert result is not None
+    assert isinstance(result, Pin)
+    assert mock_requests.get.call_count == 0
+
+
 @mock.patch("friendlypins.utils.rest_io.requests")
 def test_transaction_limit(mock_requests):
     mock_response = mock.MagicMock()

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov mock pylint sphinx tox radon
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.16
astroid==3.3.9
babel==2.17.0
cachetools==5.5.2
certifi==2025.1.31
chardet==5.2.0
charset-normalizer==3.4.1
colorama==0.4.6
coverage==4.5.4
dateutils==0.6.12
dill==0.3.9
distlib==0.3.9
docutils==0.21.2
exceptiongroup==1.2.2
filelock==3.18.0
-e git+https://github.com/TheFriendlyCoder/friendlypins.git@781788ee60312c3634bddcd285aac3a0dc62bbb5#egg=friendlypins
humanize==4.12.2
idna==3.10
imagesize==1.4.1
importlib_metadata==8.6.1
iniconfig==2.1.0
isort==6.0.1
Jinja2==3.1.6
mando==0.7.1
MarkupSafe==3.0.2
mccabe==0.7.0
mock==5.2.0
packaging==24.2
pbr==6.1.1
pillow==11.1.0
platformdirs==4.3.7
pluggy==1.5.0
Pygments==2.19.1
pylint==3.3.6
pyproject-api==1.9.0
pytest==8.3.5
pytest-cov==2.10.1
python-dateutil==2.9.0.post0
pytz==2025.2
radon==6.0.1
requests==2.32.3
six==1.17.0
snowballstemmer==2.2.0
Sphinx==7.4.7
sphinx-rtd-theme==3.0.2
sphinxcontrib-apidoc==0.5.0
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
tomli==2.2.1
tomlkit==0.13.2
tox==4.25.0
tox-factor==0.1.2
tox-pyenv==1.1.0
tqdm==4.67.1
typing_extensions==4.13.0
urllib3==2.3.0
virtualenv==20.29.3
zipp==3.21.0

name: friendlypins
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.16
      - astroid==3.3.9
      - babel==2.17.0
      - cachetools==5.5.2
      - certifi==2025.1.31
      - chardet==5.2.0
      - charset-normalizer==3.4.1
      - colorama==0.4.6
      - coverage==4.5.4
      - dateutils==0.6.12
      - dill==0.3.9
      - distlib==0.3.9
      - docutils==0.21.2
      - exceptiongroup==1.2.2
      - filelock==3.18.0
      - humanize==4.12.2
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - isort==6.0.1
      - jinja2==3.1.6
      - mando==0.7.1
      - markupsafe==3.0.2
      - mccabe==0.7.0
      - mock==5.2.0
      - packaging==24.2
      - pbr==6.1.1
      - pillow==11.1.0
      - platformdirs==4.3.7
      - pluggy==1.5.0
      - pygments==2.19.1
      - pylint==3.3.6
      - pyproject-api==1.9.0
      - pytest==8.3.5
      - pytest-cov==2.10.1
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - radon==6.0.1
      - requests==2.32.3
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==7.4.7
      - sphinx-rtd-theme==3.0.2
      - sphinxcontrib-apidoc==0.5.0
      - sphinxcontrib-applehelp==2.0.0
      - sphinxcontrib-devhelp==2.0.0
      - sphinxcontrib-htmlhelp==2.1.0
      - sphinxcontrib-jquery==4.1
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==2.0.0
      - sphinxcontrib-serializinghtml==2.0.0
      - tomli==2.2.1
      - tomlkit==0.13.2
      - tox==4.25.0
      - tox-factor==0.1.2
      - tox-pyenv==1.1.0
      - tqdm==4.67.1
      - typing-extensions==4.13.0
      - urllib3==2.3.0
      - virtualenv==20.29.3
      - zipp==3.21.0
prefix: /opt/conda/envs/friendlypins

tests/test_api.py::test_get_pin_by_id
tests/test_api.py::test_get_user tests/test_api.py::test_get_board_by_id tests/test_api.py::test_transaction_limit tests/test_api.py::test_transaction_remaining tests/test_api.py::test_rate_refresh
src/friendlypins/api.py
src/friendlypins/api.py