{"id":13858250,"url":"https://github.com/ropensci/crul","last_synced_at":"2025-12-27T10:55:47.812Z","repository":{"id":12562359,"uuid":"72250512","full_name":"ropensci/crul","owner":"ropensci","description":"R6 based http client for R (for developers)","archived":false,"fork":false,"pushed_at":"2025-07-04T21:26:56.000Z","size":1956,"stargazers_count":106,"open_issues_count":14,"forks_count":18,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-07-06T19:50:03.911Z","etag":null,"topics":["api","async","curl","http","r","r-package","rstats"],"latest_commit_sha":null,"homepage":"https://docs.ropensci.org/crul","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ropensci.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":".github/CONTRIBUTING.md","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":"codemeta.json","zenodo":null}},"created_at":"2016-10-28T23:29:59.000Z","updated_at":"2025-07-04T21:27:00.000Z","dependencies_parsed_at":"2022-08-07T07:00:23.503Z","dependency_job_id":"4952a498-6cf5-4246-973c-44c1b526eb7b","html_url":"https://github.com/ropensci/crul","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/ropensci/crul","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcrul","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcrul/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcrul/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcrul/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","download_url":"https://codeload.github.com/ropensci/crul/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fcrul/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265220548,"owners_count":23729838,"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","async","curl","http","r","r-package","rstats"],"created_at":"2024-08-05T03:02:01.819Z","updated_at":"2025-12-27T10:55:47.803Z","avatar_url":"https://github.com/ropensci.png","language":"R","funding_links":[],"categories":["R"],"sub_categories":[],"readme":"# crul \u003cimg src=\"man/figures/logo.png\" align=\"right\" alt=\"\" width=\"120\"\u003e\n\n```{r echo=FALSE}\nknitr::opts_chunk$set(\n  comment = \"#\u003e\",\n  collapse = TRUE,\n  warning = FALSE\n)\n```\n\n[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n[![R-check](https://github.com/ropensci/crul/workflows/R-check/badge.svg)](https://github.com/ropensci/crul/actions/)\n[![codecov](https://codecov.io/gh/ropensci/crul/graph/badge.svg?token=q7rQCfvbsy)](https://app.codecov.io/gh/ropensci/crul)\n[![cran checks](https://badges.cranchecks.info/worst/crul.svg)](https://CRAN.R-project.org/package=crul)\n[![rstudio mirror downloads](https://cranlogs.r-pkg.org/badges/crul)](https://github.com/r-hub/cranlogs.app)\n[![cran version](https://www.r-pkg.org/badges/version/crul)](https://cran.r-project.org/package=crul)\n\nAn HTTP client, taking inspiration from Ruby's [faraday](https://rubygems.org/gems/faraday) and Python's `requests`\n\nPackage documentation: \u003chttps://docs.ropensci.org/crul/\u003e\n\nSome Features:\n\n* `HttpClient` - Main interface to making HTTP requests. Synchronous requests only.\n* `HttpResponse` - HTTP response object, used for all responses across the\ndifferent clients.\n* `Paginator` - Auto-paginate through requests - supports a subset of all possible\npagination scenarios - will fill out more scenarios soon\n* `Async` - Asynchronous HTTP requests - a simple interface for many URLS -\nwhose interface is similar to `HttpClient` - all URLs are treated the same.\n* `AsyncVaried` - Asynchronous HTTP requests - accepts any number of `HttpRequest`\nobjects - with a different interface than `HttpClient`/`Async` due to the nature\nof handling requests with different HTTP methods, options, etc.\n* set curl options globally: `set_auth()`, `set_headers()`, and more\n* Writing to disk and streaming: available with both synchronous requests\nas well as async requests\n* Hooks on requests and responses are available in the `HttpClient` method only, \nand allow you to trigger functions to run on requests or responses, or both.\nSee `?hooks` for the details and examples\n* Mocking: `crul` integrates with [webmockr](https://github.com/ropensci/webmockr) to mock\nHTTP requests. Checkout the [http testing book][book]\n* Test caching: `crul` also integrates with [vcr](https://github.com/ropensci/vcr) to cache http requests/responses. Checkout the [http testing book][book]\n\n## Installation\n\nCRAN version\n\n```{r eval=FALSE}\ninstall.packages(\"crul\")\n```\n\nLatest binaries from rOpenSci\n\n```{r eval=FALSE}\ninstall.packages(\"crul\", repos = \"https://dev.ropensci.org\")\n```\n\nDev version from GitHub\n\n```{r eval=FALSE}\ninstall.packages(\"pak\")\npak::pak(\"ropensci/crul\")\n```\n\n```{r}\nlibrary(\"crul\")\n```\n\n## Meta\n\n* Please [report any issues or bugs](https://github.com/ropensci/crul/issues).\n* License: MIT\n* Get citation information for `crul` in R doing `citation(package = 'crul')`\n* Please note that this package is released with a [Contributor Code of Conduct](https://ropensci.org/code-of-conduct/). By contributing to this project, you agree to abide by its terms.\n* Where does the package name come from? It was a play on \"curl\", the popular command line client.\n* Where does the sticker design come from? The sticker idea [arose from a tweet](https://github.com/ropensci/crul/issues/42) - crul is close (ish) to Krull, a 1980's movie with a \"mystical five-pointed weapon\". The association with Krull was not known before naming the package.\n\n[book]: https://books.ropensci.org/http-testing/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fropensci%2Fcrul","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fropensci%2Fcrul","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fropensci%2Fcrul/lists"}