C++ wrapper for the Mastodon and Pleroma APIs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
tastytea c48f1dc3d0
continuous-integration/drone/push Build is passing Details
add maintenance mode notice
3 months ago
cmake don't add -fsanitize=undefined if MinGW is used 3 months ago
examples Reformat examples. 2 years ago
include Fix some warnings. 2 years ago
src Make direction a string_view in answer_type::parse_pagination(). 2 years ago
tests add support for testing with catch 3 6 months ago
.clang-format Update .clang-tidy, add .clang-format. 2 years ago
.clang-tidy Update .clang-tidy. 2 years ago
.drone.yml Typo in CI recipe. 2 years ago
.gitignore Generate API documentation with CMake. 2 years ago
CMakeLists.txt Version bump 0.5.7. 2 years ago
CONTRIBUTING.adoc Update contribution guidelines. 3 years ago
README.adoc add maintenance mode notice 3 months ago



mastodonpp is a C++ wrapper for the Mastodon and Pleroma APIs. It replaces mastodon-cpp.

mastodonpp is in maintenance mode. I will continue to fix bugs, but wont add new features. If youd like to adopt this project, please get in touch.

We aim to create a library that is comfortable, yet minimal. All API endpoints from Mastodon and Pleroma are stored in enum classes, to counteract typos and make your life easier. The network-facing code is built on libcurl, a mature and stable library that is available on most operating systems. The library does not parse the responses itself, but returns to you the raw data, because we know everyone has their favorite JSON library and we dont want to impose our choice on you!


Here is a rough overview of the features:

  • GET, Streaming GET, POST, PATCH, PUT and DELETE requests.

  • ✓ Comfortable access to pagination headers.

  • ✓ Report maximum allowed character per post.

  • ✓ Simple function to register a new “app” (get an access token).

  • ✓ Report which mime types are allowed for posting statuses.

  • ✓ Find and retrieve NodeInfo.

  • ✓ Easy access to the libcurl handle for maximum configurability.

  • ✓ Set proxy server, User-Agent and the path to the CA bundle.


Have a look at the reference.


#include <mastodonpp/mastodonpp.hpp>
#include <iostream>

int main()
    mastodonpp::Instance instance{"example.com", "123AccessToken123"};
    mastodonpp::Connection connection{instance};

    const mastodonpp::parametermap parameters
            {"status", "How is the weather?"},
            {"poll[options]", vector<string_view>{"Nice", "not nice"}},
            {"poll[expires_in]", "86400"}
    auto answer{connection.post(mastodonpp::API::v1::statuses, parameters)};

    if (answer)
        std::cout << answer << std::endl;

More examples are included in the reference.


Packaging status


eselect repository enable guru
echo 'dev-cpp/mastodonpp' >> /etc/portage/package.accept_keywords/mastodonpp
emaint sync -r guru
emerge -a dev-cpp/mastodonpp


The git-version is available via the AUR: https://aur.archlinux.org/packages/mastodonpp-git/.

Debian and Ubuntu

We automatically generate packages for Debian buster (10) and Ubuntu bionic (18.04), but only for x86_64 (amd64). Download them at schlomp.space.

apt install ./libmastodonpp*.deb


We automatically generate packages for CentOS 8, but only for x86_64 (amd64). Download them at schlomp.space.

yum install ./libmastodonpp*.rpm

From source


  • Tested OS: Linux

  • C++ compiler with C++17 support (tested: GCC 7/8/9, clang 6/7)

  • CMake (at least: 3.9)

  • libcurl (at least: 7.56)

  • Optional

    • Documentation: Doxygen (tested: 1.8)

    • Tests: Catch (tested: 2.5 / 1.2)

    • DEB package: dpkg (tested: 1.19)

    • RPM package: rpm-build (tested: 4.11)

Get sourcecode


Download the current release at schlomp.space.

Development version
git clone https://schlomp.space/tastytea/mastodonpp.git


mkdir -p build && cd build
cmake ..
cmake --build . -- -j$(nproc --ignore=1)
CMake options:
  • -DCMAKE_BUILD_TYPE=Debug for a debug build.

  • -DWITH_TESTS=YES if you want to compile the tests.

  • -DWITH_EXAMPLES=YES if you want to compile the examples.

  • -DWITH_DOC=YES if you want to generate the API documentation.

  • -DWITH_CLANG-TIDY=YES to check the sourcecode with clang-tidy while compiling.

  • One of:

    • -DWITH_DEB=YES if you want to be able to generate a deb-package.

    • -DWITH_RPM=YES if you want to be able to generate an rpm-package.

To create a deb or rpm package, run make package after compiling.


mastodonpp has been reported to compile with MinGW GCC, but http_method::DELETE has to be renamed, because Windows headers define a DELETE macro.