diff --git a/src/friendlypins/board.py b/src/friendlypins/board.py
index 7cfd3c2..f541582 100644
--- a/src/friendlypins/board.py
+++ b/src/friendlypins/board.py
@@ -82,7 +82,7 @@ class Board(object):
             assert 'data' in raw
 
             for cur_item in raw['data']:
-                retval.append(Pin(cur_item))
+                retval.append(Pin(cur_item, self._root_url, self._token))
 
             self._log.debug("Raw keys are %s", raw.keys())
             self._log.debug("Paged info is %s", raw['page'])
diff --git a/src/friendlypins/pin.py b/src/friendlypins/pin.py
index 9c89f66..9394aaa 100644
--- a/src/friendlypins/pin.py
+++ b/src/friendlypins/pin.py
@@ -1,15 +1,22 @@
 """Primitives for operating on Pinterest pins"""
 import logging
 import json
+import requests
+from friendlypins.headers import Headers
 
 
 class Pin(object):
     """Abstraction around a Pinterest pin
 
-    :param dict data: Raw Pinterest API data describing a pin"""
+    :param dict data: Raw Pinterest API data describing a pin
+    :param str root_url: URL of the Pinterest REST API
+    :param str token: Authentication token for interacting with the API
+    """
 
-    def __init__(self, data):
+    def __init__(self, data, root_url, token):
         self._log = logging.getLogger(__name__)
+        self._root_url = root_url
+        self._token = token
         self._data = data
 
     def __str__(self):
@@ -69,5 +76,19 @@ class Pin(object):
 
         return self._data['media']['type']
 
+    def delete(self):
+        """Removes this pin from it's respective board"""
+        temp_url = '{0}/pins/{1}/'.format(
+            self._root_url,
+            self.unique_id)
+        temp_url += "?access_token={0}".format(self._token)
+
+        response = requests.delete(temp_url)
+
+        header = Headers(response.headers)
+        self._log.debug("Boards query response header %s", header)
+
+        response.raise_for_status()
+
 if __name__ == "__main__":
     pass

Add method for deleting pins
To facilitate deletion of pins, we need to add a new `delete()` method to the Pins class to serve this purpose.
diff --git a/unit_tests/test_api.py b/unit_tests/test_api.py
index 8a0cc08..0a6e5c1 100644
--- a/unit_tests/test_api.py
+++ b/unit_tests/test_api.py
@@ -27,6 +27,8 @@ def test_get_user():
         assert expected_lastname == result.last_name
         assert expected_id == result.unique_id
 
+        mock_response.raise_for_status.assert_called_once()
+
 
 if __name__ == "__main__":
     pytest.main([__file__, "-v", "-s"])
diff --git a/unit_tests/test_board.py b/unit_tests/test_board.py
index eac8bbc..41eef02 100644
--- a/unit_tests/test_board.py
+++ b/unit_tests/test_board.py
@@ -56,5 +56,7 @@ def test_get_all_pins():
         assert expected_note == result[0].note
         assert expected_id == result[0].unique_id
         assert expected_mediatype == result[0].media_type
+
+        mock_response.raise_for_status.assert_called_once()
 if __name__ == "__main__":
     pytest.main([__file__, "-v", "-s"])
diff --git a/unit_tests/test_pin.py b/unit_tests/test_pin.py
index f18318b..1bbc348 100644
--- a/unit_tests/test_pin.py
+++ b/unit_tests/test_pin.py
@@ -18,7 +18,7 @@ def test_pin_properties():
         }
     }
 
-    obj = Pin(sample_data)
+    obj = Pin(sample_data, "http://www.pinterest.com", "1234abcd")
 
     assert obj.unique_id == expected_id
     assert obj.note == expected_note
@@ -31,7 +31,6 @@ def test_pin_missing_media_type():
     expected_note = "Here's my note"
     expected_url = "https://www.pinterest.ca/MyName/MyPin/"
     expected_link = "http://www.google.ca"
-    expected_media_type = "video"
     sample_data = {
         "id": str(expected_id),
         "note": expected_note,
@@ -39,7 +38,7 @@ def test_pin_missing_media_type():
         "url": expected_url,
     }
 
-    obj = Pin(sample_data)
+    obj = Pin(sample_data, "http://www.pinterest.com", "1234abcd")
 
     assert obj.unique_id == expected_id
     assert obj.note == expected_note
@@ -47,5 +46,22 @@ def test_pin_missing_media_type():
     assert obj.link == expected_link
     assert obj.media_type is None
 
+def test_delete():
+    api_url = "https://pinterest_url/v1"
+    token = "1234abcd"
+
+    data = {
+        "id": "12345678"
+    }
+
+    obj = Pin(data, api_url, token)
+
+    with mock.patch("friendlypins.pin.requests") as mock_requests:
+        mock_response = mock.MagicMock()
+        mock_requests.delete.return_value = mock_response
+
+        obj.delete()
+        mock_requests.delete.assert_called_once()
+        mock_response.raise_for_status.assert_called_once()
 if __name__ == "__main__":
     pytest.main([__file__, "-v", "-s"])
\ No newline at end of file
diff --git a/unit_tests/test_user.py b/unit_tests/test_user.py
index 04c0809..596f239 100644
--- a/unit_tests/test_user.py
+++ b/unit_tests/test_user.py
@@ -30,5 +30,7 @@ def test_get_boards():
         assert expected_name == result[0].name
         assert expected_id == result[0].unique_id
 
+        mock_response.raise_for_status.assert_called_once()
+
 if __name__ == "__main__":
     pytest.main([__file__, "-v", "-s"])

pip install -e .[dev]
parse_log_pytest
pytest
pytest
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
astroid==2.6.6
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
Babel==2.11.0
bleach==4.1.0
cachetools==4.2.4
certifi==2021.5.30
chardet==5.0.0
charset-normalizer==2.0.12
colorama==0.4.5
coverage==6.2
dateutils==0.6.12
distlib==0.3.9
docutils==0.18.1
filelock==3.4.1
-e git+https://github.com/TheFriendlyCoder/friendlypins.git@51374c346ee260e0825f4d83f1bd95469c17d0ae#egg=friendlypins
idna==3.10
imagesize==1.4.1
importlib-metadata==4.8.3
importlib-resources==5.4.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
isort==5.10.1
Jinja2==3.0.3
lazy-object-proxy==1.7.1
mando==0.7.1
MarkupSafe==2.0.1
mccabe==0.6.1
mock==5.2.0
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pkginfo==1.10.0
platformdirs==2.4.0
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
Pygments==2.14.0
pylint==3.0.0a4
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
pytest-cov==4.0.0
python-dateutil==2.9.0.post0
pytz==2025.2
radon==6.0.1
readme-renderer==34.0
requests==2.27.1
requests-toolbelt==1.0.0
six==1.17.0
snowballstemmer==2.2.0
Sphinx==5.3.0
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
tomli==1.2.3
tox==4.0.0a9
tqdm==4.64.1
twine==1.15.0
typed-ast==1.4.3
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
urllib3==1.26.20
virtualenv==20.17.1
webencodings==0.5.1
wrapt==1.12.1
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

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
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - astroid==2.6.6
      - babel==2.11.0
      - bleach==4.1.0
      - cachetools==4.2.4
      - chardet==5.0.0
      - charset-normalizer==2.0.12
      - colorama==0.4.5
      - coverage==6.2
      - dateutils==0.6.12
      - distlib==0.3.9
      - docutils==0.18.1
      - filelock==3.4.1
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==4.8.3
      - importlib-resources==5.4.0
      - isort==5.10.1
      - jinja2==3.0.3
      - lazy-object-proxy==1.7.1
      - mando==0.7.1
      - markupsafe==2.0.1
      - mccabe==0.6.1
      - mock==5.2.0
      - pkginfo==1.10.0
      - platformdirs==2.4.0
      - pygments==2.14.0
      - pylint==3.0.0a4
      - pytest-cov==4.0.0
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - radon==6.0.1
      - readme-renderer==34.0
      - requests==2.27.1
      - requests-toolbelt==1.0.0
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==5.3.0
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - tomli==1.2.3
      - tox==4.0.0a9
      - tqdm==4.64.1
      - twine==1.15.0
      - typed-ast==1.4.3
      - urllib3==1.26.20
      - virtualenv==20.17.1
      - webencodings==0.5.1
      - wrapt==1.12.1
prefix: /opt/conda/envs/friendlypins

unit_tests/test_pin.py::test_pin_properties unit_tests/test_pin.py::test_pin_missing_media_type unit_tests/test_pin.py::test_delete
unit_tests/test_api.py::test_get_user unit_tests/test_board.py::test_board_properties unit_tests/test_board.py::test_get_all_pins unit_tests/test_user.py::test_get_boards
src/friendlypins/board.py src/friendlypins/pin.py
src/friendlypins/board.py src/friendlypins/pin.py