{"id":15177198,"url":"https://github.com/jusguy/protonmail-api","last_synced_at":"2025-10-01T16:30:54.531Z","repository":{"id":34045940,"uuid":"167057776","full_name":"justinkalland/protonmail-api","owner":"justinkalland","description":"✉ Node.js API for ProtonMail","archived":true,"fork":false,"pushed_at":"2023-03-06T15:57:05.000Z","size":1160,"stargazers_count":147,"open_issues_count":21,"forks_count":27,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-14T12:43:47.972Z","etag":null,"topics":["api-client","nodejs","protonmail","puppeteer"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/justinkalland.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-22T19:54:14.000Z","updated_at":"2024-12-18T20:44:03.000Z","dependencies_parsed_at":"2024-06-18T22:33:03.267Z","dependency_job_id":"55f426c4-a1cb-4428-8944-428072fc76aa","html_url":"https://github.com/justinkalland/protonmail-api","commit_stats":{"total_commits":54,"total_committers":5,"mean_commits":10.8,"dds":0.6111111111111112,"last_synced_commit":"9d28a785faeb96d72d70434b311615e4277c2888"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkalland%2Fprotonmail-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkalland%2Fprotonmail-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkalland%2Fprotonmail-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkalland%2Fprotonmail-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/justinkalland","download_url":"https://codeload.github.com/justinkalland/protonmail-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234882618,"owners_count":18901301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-client","nodejs","protonmail","puppeteer"],"created_at":"2024-09-27T14:03:53.673Z","updated_at":"2025-10-01T16:30:54.136Z","avatar_url":"https://github.com/justinkalland.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# protonmail-api\nUnofficial API for interacting with ProtonMail.\n\nAllows interaction with ProtonMail through a simple Node.js API. Leverages the official [WebClient](https://github.com/ProtonMail/WebClient), keeping with the spirit of security and privacy. Currently supports sending email, managing email/conversations, and managing labels and folders. See the [documentation](https://justinkalland.github.io/protonmail-api/) for full functionality.\n\n_This project is not endorsed or supported by Proton Technologies AG._\n\n# Quick Start\n## Setup\n```\nnpm install protonmail-api\n```\n## Send an Email\n```js\nconst ProtonMail = require('protonmail-api');\n\n(async () =\u003e {\n  const pm = await ProtonMail.connect({\n    username: 'foobar@protonmail.com',\n    password: 'somethingsecure'\n  })\n\n  await pm.sendEmail({\n    to: 'justin@kalland.ch',\n    subject: 'Send email tutorial',\n    body: 'Hello world'\n  })\n\n  pm.close()\n})()\n```\n## More Examples\nNumerous examples can be found in the [tutorials section of the documentation](https://justinkalland.github.io/protonmail-api/).\n\n# Documentation\n[Full documentation found here](https://justinkalland.github.io/protonmail-api/)\n\n# How?\nThis library uses [Puppeteer](https://github.com/GoogleChrome/puppeteer) (headless Chromium) to load and control the official [ProtonMail WebClient](https://github.com/ProtonMail/WebClient).\n\nThe first attempt at building this was by trying to reverse engineer the API from the WebClient. This proved to be difficult and fragile. By utilizing the AngularJS modules (through the headless browser) this library is able to leverage all the work that goes into the official WebClient. This also means complex and sensitive things (like cryptography) are not handled by this library. The main drawback to this approach is the added weight of Puppeteer.\n\n# Contributing\nThis project is looking for maintainers and contributors. Please contact justin@kalland.ch if you are interested.\n\nTo run integration tests you need to provide a ProtonMail account. It is best to use a dedicated testing account without any filters. The credentials are set as environment variables `PM_USERNAME` and `PM_PASSWORD`.\n\nExample:\n```\nPM_USERNAME=footest@protonmail.com PM_PASSWORD=kgjSOE223qWer npm run test\n```\n\nOr create a `.env` file (in this directory next to `package.json`:\n```\nPM_USERNAME=footest@protonmail.com\nPM_PASSWORD=kgjSOE223qWer\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjusguy%2Fprotonmail-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjusguy%2Fprotonmail-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjusguy%2Fprotonmail-api/lists"}