{"id":38010767,"url":"https://github.com/voiceip/tinyphone","last_synced_at":"2026-01-16T19:20:18.221Z","repository":{"id":37895992,"uuid":"155562655","full_name":"voiceip/tinyphone","owner":"voiceip","description":"Minimalist Windows / OSx / Linux SIP Softphone with API Control","archived":false,"fork":false,"pushed_at":"2025-03-11T05:28:16.000Z","size":1392,"stargazers_count":134,"open_issues_count":7,"forks_count":39,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-11T06:26:06.989Z","etag":null,"topics":["api","pjsip","pjsua","pjsua2","sip","sip-client","softphone","tinyphone","voip"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voiceip.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2018-10-31T13:32:02.000Z","updated_at":"2025-03-11T05:28:19.000Z","dependencies_parsed_at":"2024-03-18T12:55:39.734Z","dependency_job_id":"4738e5a6-aca2-48e0-9ecc-06fa0dacd1bf","html_url":"https://github.com/voiceip/tinyphone","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/voiceip/tinyphone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voiceip%2Ftinyphone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voiceip%2Ftinyphone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voiceip%2Ftinyphone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voiceip%2Ftinyphone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voiceip","download_url":"https://codeload.github.com/voiceip/tinyphone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voiceip%2Ftinyphone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28481675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","pjsip","pjsua","pjsua2","sip","sip-client","softphone","tinyphone","voip"],"created_at":"2026-01-16T19:20:18.086Z","updated_at":"2026-01-16T19:20:18.186Z","avatar_url":"https://github.com/voiceip.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tinyphone\nMinimalist Softphone based on PJSIP with API Control\n\n[![Tinyphone Build](https://github.com/voiceip/tinyphone/actions/workflows/main.yml/badge.svg)](https://github.com/voiceip/tinyphone/actions/workflows/main.yml)\n\n## Getting Started\n\nCheckout the repo and follow the building process to compile your own, or just download the latest version from the downloads section.\n\n## Installation\n\nYou can download the latest msi installer from [here](https://ci.appveyor.com/project/kingster/tinyphone/build/artifacts) or from the [releases section](https://github.com/voiceip/tinyphone/releases).\n\n*[Optional]* After Installing you can customise the tinyphone properties by downloading and placing the [config file](https://raw.githubusercontent.com/voiceip/tinyphone/HEAD/config.json) in the folder `C:\\Program Files (x86)\\Tinyphone\\` (Windows) or at `~/Library/Application Support/com.github.voiceip.tphone/` (MacOS).\n\n\n## APIs \n\nThe softphone exposes the following resources on port `6060`. \n\n\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eResource\u003c/th\u003e\n\u003cth\u003eMethod\u003c/th\u003e\n\u003cth\u003ePayload\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eGET\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eReturns \u003ccode\u003ehi\u003c/code\u003e and the app \u003ccode\u003eversion\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/events\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eWS\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eWebSocket endpoint for realtime events\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/login\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\n\u003cpre lang=\"json\"\u003e\n{\n\"username\": \"string\" ,\n\"login\": \"optional-string**\" ,\n\"password\": \"string\",\n\"domain\": \"string\",\n\"proxy\": \"optional-string**\"\n}\n\u003c/pre\u003e\n\u003c/td\u003e\n\u003ctd\u003eAccount login with the provided details\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/logout\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eLogout of all accounts\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/accounts\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eGET\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eReturns list of registed accounts\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/accounts/{account_name}/logout\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eGET\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eLogout of account with provided \u003ccode\u003eaccount_name\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/dial\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\n\u003cpre lang=\"json\"\u003e\n{\n\"uri\": \"sip-uri\",\n\"account\": \"account_name**\" \n}\n\u003c/pre\u003e  \n\u003c/td\u003e\n\u003ctd\u003eDial a call with provided \u003ccode\u003esip-uri\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eGET\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eReturns list of active calls\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/answer\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eanswer call with specified \u003ccode\u003ecall_id\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/dtmf/{digits}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eSend dtmf digits \u003ccode\u003edigits\u003c/code\u003e to call with specified \u003ccode\u003ecall_id\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/hold\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePUT\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eHold call with specified \u003ccode\u003ecall_id\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/hold\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eDELETE\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eUnHold call with specified \u003ccode\u003ecall_id\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/conference\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePUT\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eCreate conference by merging other running calls with given \u003ccode\u003ecall_id\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/conference\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eDELETE\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eBreak specified \u003ccode\u003ecall_id\u003c/code\u003e out of conference\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/transfer\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\n\u003cpre lang=\"json\"\u003e\n{\n\"uri\": \"sip-uri\",\n}\n\u003c/pre\u003e \n\u003c/td\u003e\n\u003ctd\u003etransfer \u003ccode\u003ecall_id\u003c/code\u003e to specified \u003ccode\u003euri\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/attended-transfer/{dest_call_id}\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eInitiate attended call transfer \u003cbr /\u003e\u003ccode\u003ecall_id\u003c/code\u003e=The call id to be transfered \u003cbr /\u003e\u003ccode\u003edest_call_id\u003c/code\u003e=The call id to be replaced\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/calls/{call_id}/hangup\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003ehangup call with specified \u003ccode\u003ecall_id\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/hangup_all\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eHangup all calls\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e/exit\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePOST\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003ctd\u003eExit the application\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\n\u003c/table\u003e\n\n`** Optional Fields, should exist only with valid value`\n\nYou can view the postman collection of the APIs [here](https://documenter.getpostman.com/view/111463/TVYC9zbp)\n\n\n## Building Locally\n\n### Pre Requsite\n\nYou must have boost libraries installed on your system. Incase you don't have you can either download the [sources](https://www.boost.org/users/download/) and build it, or install a precompiled binaries from [here](https://sourceforge.net/projects/boost/files/boost-binaries/).\n\n\n### Manual Compiling\n\n```bash\ngit clone https://github.com/voiceip/tinyphone.git\ncd tinyphone\ngit submodule update --init --recursive\n#build dependencies follow appveyor.yml#build-step\n#open lib/pjproject/pjproject-vs14.sln in visual studio 2015 and compile it\n#open tinyphone/tinyphone.sln in visual studio 2015 and compile it (you will need to compile the dependencies in lib/* folder)\nrun tinyphone/Debug/tinyphone.exe\n```\n\n## Issues \u0026 Contribution\n\nFound a issue and have a solution? Go ahead and create a pull request :) Incase you don't have a immediate solution but have an replicable issue please create an Issue with the details so that we can have a look at it.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoiceip%2Ftinyphone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoiceip%2Ftinyphone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoiceip%2Ftinyphone/lists"}