{"id":20454968,"url":"https://github.com/undr/slack_api","last_synced_at":"2026-04-20T01:02:23.003Z","repository":{"id":136417979,"uuid":"178028312","full_name":"undr/slack_api","owner":"undr","description":"An RTM API and Web API clients for Slack.","archived":false,"fork":false,"pushed_at":"2020-04-01T09:40:16.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-05T10:18:59.160Z","etag":null,"topics":["elixir-lang","slack","slack-api"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/undr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-03-27T15:56:53.000Z","updated_at":"2020-04-01T09:40:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"678cb75d-a095-4734-b808-e95226b84c93","html_url":"https://github.com/undr/slack_api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/undr/slack_api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/undr%2Fslack_api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/undr%2Fslack_api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/undr%2Fslack_api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/undr%2Fslack_api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/undr","download_url":"https://codeload.github.com/undr/slack_api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/undr%2Fslack_api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32028547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"ssl_error","status_checked_at":"2026-04-20T00:17:31.068Z","response_time":55,"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":["elixir-lang","slack","slack-api"],"created_at":"2024-11-15T11:17:30.502Z","updated_at":"2026-04-20T01:02:22.982Z","avatar_url":"https://github.com/undr.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SlackAPI\n\nA Slack RTM and Web APIs client.\n\n## Installation\n\nIf [available in Hex](https://hex.pm/docs/publish), the package can be installed\nby adding `slack_api` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:slack_api, \"~\u003e 0.1.0\"}\n  ]\nend\n```\n\n## Real Time Messaging API\n\n```elixir\ndefmodule ErrorHandler do\n  @behaviour SlackAPI.RTM.ErrorHandler.Behaviour\n\n  def handle(error) do\n    # Handle an error\n  end\n\n  def handle(exception, strace) do\n    # Handle an exception\n  end\nend\n```\n\n```elixir\ndefmodule RTMHandler do\n  use SlackAPI.RTM.Handler\n\n  error ErrorHandler\n\n  def init(data, opts) do\n    # prepare a state\n    {:ok, state}\n  end\n\n  def handle_connect(conn, state) do\n    # Handle `connect` event.\n    {:ok, state}\n  end\n\n  def handle_disconnect(conn, state) do\n    # Handle `disconnect` event.\n    {:ok, state}\n  end\n\n  def handle_message(message, state) do\n    # Handle `message` event.\n    {:ok, state}\n  end\n\n  def handle_cast(message, state) do\n    # Handle `cast` event.\n    # WebSockex.cast(websocket, {:event, \"data\"})\n    {:ok, state}\n  end\n\n  def handle_info(message, state) do\n    # Handle `info` event.\n    # send(websocket, {:event, \"data\"})\n    {:ok, state}\n  end\nend\n```\n\n```elixir\n{:ok, websocket} = SlackAPI.RTM.start({RTMHandler, [token: \"TOKEN\", url: \"https://slack.com\"]})\n```\n\n\n## Web API\n\n```elixir\nclient = SlackAPI.Web.new(token: \"TOKEN\", url: \"https://slack.com\")\nSlackAPI.Web.api().test(client, foo: \"bar\")\nSlackAPI.Web.api().test(client, %{foo: \"bar\"})\n```\n\nAll required params should be explicitly passed into a function as arguments. Order this arguments should be the same as in the list of params in [Slack docs](https://api.slack.com/methods).\n\nOptional params should be passed as a `map()` or `Keyword.t()`. Excess arguments will be filtered out.\n\n```elixir\nclient = SlackAPI.Web.new(token: \"TOKEN\", url: \"https://slack.com\")\nSlackAPI.Web.channels().test(client, \"channel-name\", validate: true)\nSlackAPI.Web.channels().create(client, \"channel-name\", %{validate: true})\n```\n\n#### Supported endpoints:\n\n**api**\n\n- [api.test](https://api.slack.com/methods/api.test)\n\n**apps**\n\n- [apps.uninstall](https://api.slack.com/methods/apps.uninstall)\n- [apps.permissions.info](https://api.slack.com/methods/apps.permissions.info)\n- [apps.permissions.request](https://api.slack.com/methods/apps.permissions.request)\n- [apps.permissions.resources.list](https://api.slack.com/methods/apps.permissions.resources.list)\n- [apps.permissions.scopes.list](https://api.slack.com/methods/apps.permissions.scopes.list)\n- [apps.permissions.users.list](https://api.slack.com/methods/apps.permissions.users.list)\n- [apps.permissions.users.request](https://api.slack.com/methods/apps.permissions.users.request)\n\n**auth**\n\n- [auth.revoke](https://api.slack.com/methods/auth.revoke)\n- [auth.test](https://api.slack.com/methods/auth.test)\n\n**bots**\n\n- [bots.info](https://api.slack.com/methods/bots.info)\n\n**chat**\n\n- [chat.delete](https://api.slack.com/methods/chat.delete)\n- [chat.deleteScheduledMessage](https://api.slack.com/methods/chat.deleteScheduledMessage)\n- [chat.getPermalink](https://api.slack.com/methods/chat.getPermalink)\n- [chat.meMessage](https://api.slack.com/methods/chat.meMessage)\n- [chat.postEphemeral](https://api.slack.com/methods/chat.postEphemeral)\n- [chat.postMessage](https://api.slack.com/methods/chat.postMessage)\n- [chat.scheduleMessage](https://api.slack.com/methods/chat.scheduleMessage)\n- [chat.unfurl](https://api.slack.com/methods/chat.unfurl)\n- [chat.update](https://api.slack.com/methods/chat.update)\n\n**conversations**\n\n- [conversations.archive](https://api.slack.com/methods/conversations.archive)\n- [conversations.close](https://api.slack.com/methods/conversations.close)\n- [conversations.create](https://api.slack.com/methods/conversations.create)\n- [conversations.history](https://api.slack.com/methods/conversations.history)\n- [conversations.info](https://api.slack.com/methods/conversations.info)\n- [conversations.invite](https://api.slack.com/methods/conversations.invite)\n- [conversations.join](https://api.slack.com/methods/conversations.join)\n- [conversations.kick](https://api.slack.com/methods/conversations.kick)\n- [conversations.leave](https://api.slack.com/methods/conversations.leave)\n- [conversations.list](https://api.slack.com/methods/conversations.list)\n- [conversations.members](https://api.slack.com/methods/conversations.members)\n- [conversations.open](https://api.slack.com/methods/conversations.open)\n- [conversations.rename](https://api.slack.com/methods/conversations.rename)\n- [conversations.replies](https://api.slack.com/methods/conversations.replies)\n- [conversations.setPurpose](https://api.slack.com/methods/conversations.setPurpose)\n- [conversations.setTopic](https://api.slack.com/methods/conversations.setTopic)\n- [conversations.unarchive](https://api.slack.com/methods/conversations.unarchive)\n\n**dialog**\n\n- [dialog.open](https://api.slack.com/methods/dialog.open)\n\n**dnd**\n\n- [dnd.endDnd](https://api.slack.com/methods/dnd.endDnd)\n- [dnd.endSnooze](https://api.slack.com/methods/dnd.endSnooze)\n- [dnd.info](https://api.slack.com/methods/dnd.info)\n- [dnd.setSnooze](https://api.slack.com/methods/dnd.setSnooze)\n- [dnd.teamInfo](https://api.slack.com/methods/dnd.teamInfo)\n\n**emoji**\n\n- [emoji.list](https://api.slack.com/methods/emoji.list)\n\n**files**\n\n- [files.delete](https://api.slack.com/methods/files.delete)\n- [files.info](https://api.slack.com/methods/files.info)\n- [files.list](https://api.slack.com/methods/files.list)\n- [files.revokePublicURL](https://api.slack.com/methods/files.revokePublicURL)\n- [files.sharedPublicURL](https://api.slack.com/methods/files.sharedPublicURL)\n- [files.upload](https://api.slack.com/methods/files.upload)\n- [files.comments.delete](https://api.slack.com/methods/files.comments.delete)\n- [files.remote.add](https://api.slack.com/methods/files.remote.add)\n- [files.remote.info](https://api.slack.com/methods/files.remote.info)\n- [files.remote.list](https://api.slack.com/methods/files.remote.list)\n- [files.remote.remove](https://api.slack.com/methods/files.remote.remove)\n- [files.remote.share](https://api.slack.com/methods/files.remote.share)\n- [files.remote.update](https://api.slack.com/methods/files.remote.update)\n\n**migration**\n\n- [migration.exchange](https://api.slack.com/methods/migration.exchange)\n\n**oauth**\n\n- [oauth.access](https://api.slack.com/methods/oauth.access)\n- [oauth.token](https://api.slack.com/methods/oauth.token)\n\n**pins**\n\n- [pins.add](https://api.slack.com/methods/pins.add)\n- [pins.list](https://api.slack.com/methods/pins.list)\n- [pins.remove](https://api.slack.com/methods/pins.remove)\n\n**reactions**\n\n- [reactions.add](https://api.slack.com/methods/reactions.add)\n- [reactions.get](https://api.slack.com/methods/reactions.get)\n- [reactions.list](https://api.slack.com/methods/reactions.list)\n- [reactions.remove](https://api.slack.com/methods/reactions.remove)\n\n**reminders**\n\n- [reminders.add](https://api.slack.com/methods/reminders.add)\n- [reminders.complete](https://api.slack.com/methods/reminders.complete)\n- [reminders.delete](https://api.slack.com/methods/reminders.delete)\n- [reminders.info](https://api.slack.com/methods/reminders.info)\n- [reminders.list](https://api.slack.com/methods/reminders.list)\n\n**rtm**\n\n- [rtm.connect](https://api.slack.com/methods/rtm.connect)\n- [rtm.start](https://api.slack.com/methods/rtm.start)\n\n**search**\n\n- [search.all](https://api.slack.com/methods/search.all)\n- [search.files](https://api.slack.com/methods/search.files)\n- [search.messages](https://api.slack.com/methods/search.messages)\n\n**team**\n\n- [team.accessLogs](https://api.slack.com/methods/team.accessLogs)\n- [team.billableInfo](https://api.slack.com/methods/team.billableInfo)\n- [team.info](https://api.slack.com/methods/team.info)\n- [team.integrationLogs](https://api.slack.com/methods/team.integrationLogs)\n- [team.profile.get](https://api.slack.com/methods/team.profile.get)\n\n**usergroups**\n\n- [usergroups.create](https://api.slack.com/methods/usergroups.create)\n- [usergroups.disable](https://api.slack.com/methods/usergroups.disable)\n- [usergroups.enable](https://api.slack.com/methods/usergroups.enable)\n- [usergroups.list](https://api.slack.com/methods/usergroups.list)\n- [usergroups.update](https://api.slack.com/methods/usergroups.update)\n- [usergroups.users.list](https://api.slack.com/methods/usergroups.users.list)\n- [usergroups.users.update](https://api.slack.com/methods/usergroups.users.update)\n\n**users**\n\n- [users.conversations](https://api.slack.com/methods/users.conversations)\n- [users.deletePhoto](https://api.slack.com/methods/users.deletePhoto)\n- [users.getPresence](https://api.slack.com/methods/users.getPresence)\n- [users.identity](https://api.slack.com/methods/users.identity)\n- [users.info](https://api.slack.com/methods/users.info)\n- [users.list](https://api.slack.com/methods/users.list)\n- [users.lookupByEmail](https://api.slack.com/methods/users.lookupByEmail)\n- [users.setActive](https://api.slack.com/methods/users.setActive)\n- [users.setPhoto](https://api.slack.com/methods/users.setPhoto)\n- [users.setPresence](https://api.slack.com/methods/users.setPresence)\n- [users.profile.get](https://api.slack.com/methods/users.profile.get)\n- [users.profile.set](https://api.slack.com/methods/users.profile.set)\n\n\n#### To Do:\n\n**admin.apps**\n\n- [admin.apps.approve](https://api.slack.com/methods/admin.apps.approve)\n- [admin.apps.restrict](https://api.slack.com/methods/admin.apps.restrict)\n- [admin.apps.approved.list](https://api.slack.com/methods/admin.apps.approved.list)\n- [admin.apps.requests.list](https://api.slack.com/methods/admin.apps.requests.list)\n- [admin.apps.restricted.list](https://api.slack.com/methods/admin.apps.restricted.list)\n\n**admin.conversations**\n\n- [admin.conversations.setTeams](https://api.slack.com/methods/admin.conversations.setTeams)\n\n**admin.emoji**\n\n- [admin.emoji.add](https://api.slack.com/methods/admin.emoji.add)\n- [admin.emoji.addAlias](https://api.slack.com/methods/admin.emoji.addAlias)\n- [admin.emoji.list](https://api.slack.com/methods/admin.emoji.list)\n- [admin.emoji.remove](https://api.slack.com/methods/admin.emoji.remove)\n- [admin.emoji.rename](https://api.slack.com/methods/admin.emoji.rename)\n\n**admin.inviteRequests**\n\n- [admin.inviteRequests.approve](https://api.slack.com/methods/admin.inviteRequests.approve)\n- [admin.inviteRequests.deny](https://api.slack.com/methods/admin.inviteRequests.deny)\n- [admin.inviteRequests.list](https://api.slack.com/methods/admin.inviteRequests.list)\n- [admin.inviteRequests.approved.list](https://api.slack.com/methods/admin.inviteRequests.approved.list)\n- [admin.inviteRequests.denied.list](https://api.slack.com/methods/admin.inviteRequests.denied.list)\n\n**admin.teams**\n\n- [admin.teams.create](https://api.slack.com/methods/admin.teams.create)\n- [admin.teams.list](https://api.slack.com/methods/admin.teams.list)\n- [admin.teams.admins.list](https://api.slack.com/methods/admin.teams.admins.list)\n- [admin.teams.owners.list](https://api.slack.com/methods/admin.teams.owners.list)\n- [admin.teams.settings.info](https://api.slack.com/methods/admin.teams.settings.info)\n- [admin.teams.settings.setDefaultChannels](https://api.slack.com/methods/admin.teams.settings.setDefaultChannels)\n- [admin.teams.settings.setDescription](https://api.slack.com/methods/admin.teams.settings.setDescription)\n- [admin.teams.settings.setDiscoverability](https://api.slack.com/methods/admin.teams.settings.setDiscoverability)\n- [admin.teams.settings.setIcon](https://api.slack.com/methods/admin.teams.settings.setIcon)\n- [admin.teams.settings.setName](https://api.slack.com/methods/admin.teams.settings.setName)\n\n**admin.users**\n\n- [admin.users.assign](https://api.slack.com/methods/admin.users.assign)\n- [admin.users.invite](https://api.slack.com/methods/admin.users.invite)\n- [admin.users.list](https://api.slack.com/methods/admin.users.list)\n- [admin.users.remove](https://api.slack.com/methods/admin.users.remove)\n- [admin.users.setAdmin](https://api.slack.com/methods/admin.users.setAdmin)\n- [admin.users.setExpiration](https://api.slack.com/methods/admin.users.setExpiration)\n- [admin.users.setOwner](https://api.slack.com/methods/admin.users.setOwner)\n- [admin.users.setRegular](https://api.slack.com/methods/admin.users.setRegular)\n- [admin.users.session.reset](https://api.slack.com/methods/admin.users.session.reset)\n\nDocumentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)\nand published on [HexDocs](https://hexdocs.pm). Once published, the docs can\nbe found at [https://hexdocs.pm/slack_api](https://hexdocs.pm/slack_api).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fundr%2Fslack_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fundr%2Fslack_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fundr%2Fslack_api/lists"}