{"id":15008375,"url":"https://github.com/flyclops/tenor_dart","last_synced_at":"2026-03-08T20:38:48.170Z","repository":{"id":256987733,"uuid":"851658274","full_name":"Flyclops/tenor_dart","owner":"Flyclops","description":"A package for interfacing with Tenor's GIF search directly in Dart using HTTP.","archived":false,"fork":false,"pushed_at":"2024-09-25T17:17:11.000Z","size":5453,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-18T22:47:21.291Z","etag":null,"topics":["dart","dart-library","dartlang","flutter","flutter-package","gif","gif-picker","gifs","http","tenor"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Flyclops.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-03T13:49:00.000Z","updated_at":"2024-09-25T17:16:40.000Z","dependencies_parsed_at":"2024-11-18T01:46:56.348Z","dependency_job_id":null,"html_url":"https://github.com/Flyclops/tenor_dart","commit_stats":null,"previous_names":["flyclops/tenor_dart"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flyclops%2Ftenor_dart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flyclops%2Ftenor_dart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flyclops%2Ftenor_dart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flyclops%2Ftenor_dart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Flyclops","download_url":"https://codeload.github.com/Flyclops/tenor_dart/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243190946,"owners_count":20250984,"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":["dart","dart-library","dartlang","flutter","flutter-package","gif","gif-picker","gifs","http","tenor"],"created_at":"2024-09-24T19:17:58.454Z","updated_at":"2026-03-08T20:38:48.162Z","avatar_url":"https://github.com/Flyclops.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚠️ DISCONTINUED ⚠️\nDue to [Google shutting down the Tenor API](https://support.google.com/tenor/answer/10455265#whatll-happen-to-the-tenor-api\u0026zippy=%2Cwhatll-happen-to-the-tenor-api), we will be discontinuing development of this package. If a security issue comes up between now and June 2026 we will do our best to address it. [Please open an issue](https://github.com/Flyclops/tenor_dart/issues/new/choose) if you find anything.\n\nConsider [GIPHY](https://pub.dev/packages/giphy_get) or [KLIPY](https://pub.dev/packages/klipy_dart) as an alternative. Please do your research beforehand as neither is actually free.\n\n# Tenor Dart\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pub.dartlang.org/packages/tenor_dart\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/tenor_dart.svg\" alt=\"Tenor Dart Pub Package\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Flyclops/tenor_dart/actions/workflows/main.yml\"\u003e\u003cimg src=\"https://github.com/flyclops/tenor_dart/actions/workflows/main.yml/badge.svg\" alt=\"Build Status\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://coveralls.io/github/Flyclops/tenor_dart?branch=main\"\u003e\u003cimg src=\"https://coveralls.io/repos/github/Flyclops/tenor_dart/badge.svg?branch=main\" alt=\"Coverage Status\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/flyclops/tenor_dart/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/flyclops/tenor_dart?style=flat\" alt=\"Tenor Dart Stars\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Flyclops/tenor_dart/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-BSD_3--Clause-blue.svg\" alt=\"License BSD 3-Clause\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis package integrates [Tenor GIF search](https://tenor.com/) into [Dart](https://dart.dev/) by utilizing the [http](https://pub.dev/packages/http) package to communicate directly with the [Tenor API V2](https://developers.google.com/tenor/guides/quickstart).\n\nCurrently supported endpoints include: [search](https://developers.google.com/tenor/guides/endpoints#search), [featured](https://developers.google.com/tenor/guides/endpoints#featured), [categories](https://developers.google.com/tenor/guides/endpoints#categories), [search suggestions](https://developers.google.com/tenor/guides/endpoints#search-suggestions), [autocomplete](https://developers.google.com/tenor/guides/endpoints#autocomplete), [trending search terms](https://developers.google.com/tenor/guides/endpoints#trending-search), [register share](https://developers.google.com/tenor/guides/endpoints#register-share) and [posts](https://developers.google.com/tenor/guides/endpoints#posts).\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/flyclops/tenor_dart/raw/main/example/assets/demo.gif\" width=\"200\" alt=\"Tenor Dart Demo\"/\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003e\u003csup\u003eShow some ❤️ and \u003ca href=\"https://github.com/flyclops/tenor_dart\"\u003estar the repo\u003c/a\u003e to support this package.\u003c/sup\u003e\u003c/strong\u003e\u003c/p\u003e\n\n## What to know\n\n- In order to start using Tenor Dart you must obtain an API key by registering your project with [Tenor](https://developers.google.com/tenor/guides/quickstart).\n- Tenor requires proper [attribution](https://developers.google.com/tenor/guides/attribution) for projects using their API. This package does not handle the attribution process, so you will need to take care of it yourself.\n\n## Obtaining Tenor API v2 key\n\n1. Log in to the [Google Cloud Console](https://console.cloud.google.com)\n2. Create a [new project](https://console.cloud.google.com/projectcreate)\n3. Go to the Google Cloud Marketplace and find the [Tenor API](https://console.cloud.google.com/marketplace/product/google/tenor.googleapis.com)\n4. Click `Enable` to activate it\n5. In the navigation menu, go to the `APIs \u0026 Services` tab and select [Credentials](https://console.cloud.google.com/apis/credentials)\n6. Click `+ Create Credentials` and choose `API key`\n7. Copy the generated API key\n8. Provide this API key as a parameter to `Tenor(apiKey: 'YOUR_API_KEY')`\n\n## Usage\n\n### Installation\n\n```\ndart pub add tenor_dart\n```\n\n\u003csup\u003eHaving trouble? Read the pub.dev \u003ca href=\"https://pub.dev/packages/tenor_dart/install\"\u003einstallation page\u003c/a\u003e.\u003c/sup\u003e\n\n### Import\n\nImport the package into the dart file where it will be used:\n\n```\nimport 'package:tenor_dart/tenor_dart.dart';\n```\n\n### Initialize\n\nYou must pass in a valid `apiKey` provided by [Tenor](https://developers.google.com/tenor/guides/quickstart). It's **strongly recommended** to also pass in a `clientKey` as this will help you distinguish which project is making the requests.\n\n```\nfinal tenorClient = Tenor(apiKey: 'YOUR_API_KEY', clientKey: 'YOUR_PROJECT_NAME');\n```\n\n## Example\n\nFor an example on each endpoint feel free to check out [example/lib/main.dart](https://github.com/Flyclops/tenor_dart/blob/main/example/lib/main.dart).\n\nHere is how you can get 20 of the latest [featured](https://developers.google.com/tenor/guides/endpoints#featured) GIFs and print the first one.\n\n```\nfinal tenorClient = Tenor(apiKey: 'YOUR_API_KEY', clientKey: 'YOUR_PROJECT_NAME');\nfinal TenorResponse? response = await tenorClient.featured(limit: 20);\nfinal List\u003cTenorResult\u003e? gifs = response?.results;\nprint(gifs?.first.media.tinygif?.url);\n```\n\n## Looking for a UI?\n\nIf you're seeking a ready-made UI solution, check out [Tenor Flutter](https://github.com/Flyclops/tenor_flutter), which is designed based on the [Tenor SDK](https://developers.google.com/tenor/guides/quickstart#launch-search) [guidelines](https://developers.google.com/tenor/guides/attribution).\n\nYou can see a live example of it in our mobile game [Domino!](https://flyclops.com/games/domino.html) \u003csup\u003eIt's in chat.\u003c/sup\u003e\n\n## Sponsors\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cp align=\"center\"\u003e\u003ca href=\"https://flyclops.com/\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/Flyclops/tenor_dart/main/example/assets/flyclops_logo_github.png\" alt=\"Flyclops\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cp align=\"center\"\u003e\u003ca href=\"https://flyclops.com/games/domino.html\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/Flyclops/tenor_dart/main/example/assets/domino_logo_github.png\" alt=\"Domino!\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cp align=\"center\"\u003e\u003ca href=\"https://flyclops.com/\"\u003eFlyclops\u003c/a\u003e is a independent mobile games studio specializing in casual multi-player games, both asynchronous turn-based, and real-time. Flyclops’s games have been played by millions across\u0026nbsp;the\u0026nbsp;globe.\u003c/p\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cp align=\"center\"\u003e\u003ca href=\"https://flyclops.com/games/domino.html\"\u003eDomino!\u003c/a\u003e is super addictive, fast-paced, multiplayer dominoes done right for \u003ca href=\"https://j.mp/domino_FREE\"\u003eiOS\u003c/a\u003e and \u003ca href=\"https://flycl.ps/domino_android\"\u003eAndroid\u003c/a\u003e. This easy-to-learn but impossible-to-master strategy game is beautifully designed and endlessly\u0026nbsp;entertaining!\u003c/p\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## What's next?\n\n- Documentation\n- Further improvements\n\n## Contributing\n\nIf you read this far then you are awesome! There are a multiple ways in which you can [contribute](https://github.com/Flyclops/tenor_dart/blob/main/CONTRIBUTING.md):\n\n- Pick up any issue marked with \"[good first issue](https://github.com/flyclops/tenor_dart/issues?q=is:open+is:issue+label:%22good+first+issue%22)\"\n- Propose any feature, enhancement\n- Report a bug\n- Fix a bug\n- Write and improve some documentation\n- Send in a Pull Request 🙏\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyclops%2Ftenor_dart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflyclops%2Ftenor_dart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyclops%2Ftenor_dart/lists"}