npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

replapi-it

v3.2.9

Published

An all-in-one API for replit.com

Readme


Replit's API is constantly changing, which means this will as well. I will try to keep it easy to use but be aware that your project may stop working at any point.


Install

npm install replapi-it

Usage

Main API

const Client = require('replapi-it');
//A Replit connect.sid cookie
const client = new Client('SID');

client.on('ready', () => {
	
})

If you don't know how to find your connect.sid cookie, look here

Example

Logs the number of followers a user has

const Client = require('replapi-it');
const client = new Client('SID');

client.on('ready', async () => {
	let user = await client.users.fetch('PikachuB2005');
	console.log(user.followerCount);
})

Client

  • <Client>.user: a CurrentUser object of the logged in user
  • <Client>.repl: a Repl object of the current repl, if any
  • <Client>.users: a UserManager object
  • <Client>.repls: a ReplManager object
  • <Client>.posts: a PostManager object
  • <Client>.comments: a CommentManager object
  • <Client>.on('notification', callback): notifications event listener * callback: a callback function

User

  • <User>.repls: a ReplManager object
  • <User>.followers: a FollowerManager object
  • <User>.follows: a FollowingManager object
  • <User>.posts: a PostManager object
  • <User>.id: the user's id
  • <User>.username: the user's username
  • <User>.firstName: the user's first name
  • <User>.lastName: the user's last name
  • <User>.locale: the user's language
  • <User>.isVerified: if the user is verified or not
  • <User>.displayName: the user's display name
  • <User>.fullName: the user's full name
  • <User>.url: the url to the user's profile
  • <User>.bio: the user's bio
  • <User>.socials: the user's social media urls
  • <User>.roles: the user's roles
  • <User>.isFollowedByCurrentUser: if you are following the user
  • <User>.isFollowingCurrentUser: if you're following the user
  • <User>.isBlockedByCurrentUser: if you've blocked the user
  • <User>.isBlockingCurrentUser: if the user blocked you
  • <User>.isLoggedIn: if the user is logged in (<User>.isOnline is recommended)
  • <User>.isSubscribed:
  • <User>.followerCount: how many followers the user has
  • <User>.followCount: how many people the user is following
  • <User>.isHacker: if the user has Hacker plan
  • <User>.image: the url to the user's profile picture
  • <User>.coverImage: the url and offset to the user's profile banner image
  • <User>.timeCreated: when the user's account was created
  • <User>.lastSeen: when the user was last online
  • <User>.isOnline: if the user is online
  • <User>.setFollowing(boolean): follow or unfollow the user
  • <User>.setBlocking(boolean): block or unblock the user

CurrentUser

Also contains most User properties and methods, excluding follow / block values

  • <CurrentUser>.notifications: a NotificationManager object
  • <CurrentUser>.email: the user's email
  • <CurrentUser>.emailNotifications: if the user should be emailed notifications
  • <CurrentUser>.hasRepl: if the user has any repls
  • <CurrentUser>.hasPrivacyRole:
  • <CurrentUser>.warnings: any warnings the user has recieved
  • <CurrentUser>.isBannedFromBoards: if the user is banned from boards
  • <CurrentUser>.canUpdateEmail: if the user can change their email
  • <CurrentUser>.canUpdateUsername: if the user can change their username
  • <CurrentUser>.device: if the user is using a mobile or mac device
  • <CurrentUser>.sidebarClosed: if the user's sidebar is closed
  • <CurrentUser>.hasProfileImage: if the user has a profile image
  • <CurrentUser>.socialSignup:
  • <CurrentUser>.githubInfo: the user's github info
  • <CurrentUser>.usernameRepl: the user's repl whose title matches their username
  • <CurrentUser>.daysSinceSignup: how many days since the user signed up
  • <CurrentUser>.storage: the user's storage limit and usage
  • <CurrentUser>.editorPreferences: the user's editor preferences
  • <CurrentUser>.countryCode: the user's country code
  • <CurrentUser>.auth: google / github / facebook auth
  • <CurrentUser>.change(options): updates the current user's settings
    • options:
      • image: a path to an image file to set your profile picture
      • firstName: changes your first name
      • lastName: changes your last name
      • bio: changes your bio
      • emailNotifications: if you should recieve email notifications

Repl

  • <Repl>.threads: a list of Thread objects
  • <Repl>.multiplayers: a MultiplayerManager object
  • <Repl>.comments: a CommentManager object
  • <Repl>.id: the repl's id
  • <Repl>.isProject:
  • <Repl>.isPrivate: if the repl is private
  • <Repl>.isStarred: if the repl is starred
  • <Repl>.title: the repl's title
  • <Repl>.slug: the repl's title slug
  • <Repl>.imageUrl: the url to the repl's image
  • <Repl>.folderId: the folder the repl is in
  • <Repl>.isRenamed: if the repl is renamed
  • <Repl>.commentCount: how many comments the user has
  • <Repl>.likeCount: how many likes the repl has
  • <Repl>.currentUserDidLike: if you liked the repl
  • <Repl>.templateCategory: the category of the template used to create the repl
  • <Repl>.wasPosted: if the repl was posted
  • <Repl>.wasPublished: if the repl was published
  • <Repl>.language: the id of the repl's language (you're probably looking for <Repl>.templateInfo.label)
  • <Repl>.lang: the repls language (you're probably looking for <Repl>.templateInfo.label)
  • <Repl>.iconUrl: the url of the repl's icon
  • <Repl>.templateLabel: label of the repl's template repl
  • <Repl>.url: the repl's url
  • <Repl>.inviteUrl: the url to invite users to the repl
  • <Repl>.multiplayerInvites: invites to the repl
  • <Repl>.historyUrl: the repl's history url
  • <Repl>.analyticsUrl: the repl's analytics url
  • <Repl>.rootOriginReplUrl: the url to the repl's origin repl
  • <Repl>.isOwner: if you are the owner of the repl
  • <Repl>.config: the repl's config data
  • <Repl>.pinnedToProfile: if the repl is pinned to your profile
  • <Repl>.size: the repl's size, in bytes.
  • <Repl>.hostedUrl: the repl's hosted url, used for iframes
  • <Repl>.terminalUrl: the repl's terminal url
  • <Repl>.database: data about the repl's database
  • <Repl>.template: the repl's template
  • <Repl>.isProjectFork: if the repl is a fork
  • <Repl>.publicForkCount: how many public forks the repl has
  • <Repl>.runCount: how many times the repl has been run
  • <Repl>.isAlwaysOn: if the repl is always on
  • <Repl>.isBoosted: if the repl is boosted
  • <Repl>.tags: the repl's tags
  • <Repl>.lastPublishedAt: when the repl was last published
  • <Repl>.multiplayers: a <Collection> of User objects of people invited to the repl
  • <Repl>.nixedLanguage: if the repl was nixed
  • <Repl>.publishedAs: returns undefined, 'RegularRepl', or 'Template'
  • <Repl>.attachments:
  • <Repl>.description: the repl's description
  • <Repl>.markdownDescription: the repl's description, with markdown
  • <Repl>.hasExplainCode: if the repl has explain code
  • <Repl>.hasGenerateCode: if the repl has generate code
  • <Repl>.templateInfo: info about the repl's template
  • <Repl>.domains:
  • <Repl>.apexProxy: the ip of the repl's apex proxy
  • <Repl>.replViewSettings: the repl's view settings
  • <Repl>.powerUpCosts: the repl's power up costs
  • <Repl>.isTutorial:if the repl is a tutorial
  • <Repl>.owner: a User object of the repl's owner
  • <Repl>.timeCreated: when the repl was created
  • <Repl>.timeUpdated: when the repl was updated
  • <Repl>.currentUserPermissions: your permissions for the repl
  • <Repl>.fetchThreads(options): returns the repls'd threads
  • <Repl>.database: A Repl Database object
  • <Repl>.fork(options): forks the repl
    • options:
      • cache: cache the result(s). default: true
      • title: the repl's title
      • description: the repl's description
      • isPrivate: if the repl should be private
  • <Repl>.delete(): deletes the repl
  • <Repl>.change(options): updates the repl
    • options:
      • title: the repl's title
      • description: the repl's description
      • isPrivate: if the repl should be private
  • <Repl>.comment(body): comments on the repl
  • <Repl>.connect(): Connect to the repl The following require you to be connected to the repl:
  • <Repl>.env: the repl's environmental variables (secrets)
  • <Repl>.files: a FileManager object
  • <Repl>.console: a Console object
  • <Repl>.disconnect(): disconnects from the repl

UserManager

  • <Usermanager>.cache: a Collection of User objects
  • <Usermanager>.fetch(userResolvable, options): a Promise of a User object
    • userResolvable: A username, id, or User
    • options:
      • force: doesn't check the cache. default: false
      • cache: cache the result(s). default: true
  • <Usermanager>.search(query, options): a Collection of User objects
    • query: what to search
    • options:
      • cache: cache the result(s). default: true
    • limit: the maximum number of results. default: 10

ReplManager

  • <Replmanager>.cache: a Collection of Repl objects
  • <Client>.<Replmanager>.fetch(replResolvable, options): a User object
    • replResolvable: A url, id, or Repl
    • options:
      • force: doesn't check the cache. default: false
      • cache: cache the result(s). default: true
  • <Replmanager>.generateTitle(): a randomly generated repl title
  • <Client>.<ReplManager>.create(options): creates a new repl
    • options:
      • title: the repl's title
    • description: the repl's description
    • language: the repl's language
      • isPrivate: if the repl is private

Collection

A Map object with extra methods. Meant to be like discord.js's Collection

PostManager

  • <PostManager>.cache a Collection
  • <PostManager>.trending(options): a Collection of trending posts
    • options:
      • force: doesn't check the cache. default: false
      • cache: cache the result(s). default: true
      • limit: the maximum number of results
      • tags: tags included in the results

CommentManager

  • <Client>.<CommentManager>.fetch(commentResolvable, options): returns a Comment object
    • commentResolvable: a comment id
    • options:
      • cache: cache the result(s). default: true
  • <Repl>.<CommentManager>.fetch(options): returns a Collection of Comment objects
    • options:
      • cache: cache the result(s). default: true
      • limit: the maximum number of results
  • <User>.<CommentManager>.fetch(options): returns a Collection of Comment objects
    • options:
      • cache: cache the result(s). default: true
      • limit: the maximum number of results

Post

  • <Post>.id: the post's id
  • <Post>.title: the post's title
  • <Post>.commentCount: how many replies the post has
  • <Post>.body: the body of the post
  • <Post>.user: a User object
  • <Post>.repl: a Repl object
  • <Post>.comment: a Comment object
  • <Post>.timeCreated: when the post was created
  • <Post>.timeUpdated: when the post was last updated

Comment

  • <Comment>.comments: an array of Comment objects
  • <Comment>.id: the comment's id
  • <Comment>.body: the comment's body
  • <Comment>.bodyNoMarkdown: the comment's body without markdown
  • <Comment>.curretUserPermissions: your current permissions for the comment
  • <Comment>.timeCreated: when the comment was created
  • <Comment>.timeUpdated: when the comment was last updated
  • <Comment>.user: a User object
  • <Comment>.repl: a Repl object
  • <Comment>.reply(body): reply to the comment

FollowerManager

  • <FollowerManager>.fetch(options): a Collection of User objects
    • options:
      • cache: cache the result(s). default: true
      • limit: the maximum number of results

FollowingManager

  • <FollowingManager>.fetch(options): a Collection of User objects
    • options:
      • cache: cache the result(s). default: true
      • limit: the maximum number of results
  • <FollowingManager>.events: a UserEventManager

MultiplayerManager

  • <MultiplayerManager>.cache: a Collection of User objects
  • <MultiplayerManager>.invite(userResolvable): invite a user to the repl
  • <MultiplayerManager>.remove(userResolvable): remove a user from the repl

FileManager

  • <FileManager>.persisting: if the manager is currently persisting
  • <FileManager>.read(path): returns the contents of a file
  • <FileManager>.write(path, content): writes to a file
  • <FileManager>.mkdir(path): makes a directory
  • <FileManager>.remove(path): removes a file / directory
  • <FileManager>.move(oldPath, newPath): moves a file/directory
  • <FileManager>.readdir(path): get an array of files in a directory
  • <FileManager>.recursedir(path): get an array of recursed files in a directory
  • <FileManager>.presist(): makes the files update when edited
  • <FileManager>.snapshot(): updates the files to what they are currently

Console

  • <Console>.send(input): sends something to the console
  • <Console>.run(): runs the repl
  • <Console>.stop(): stops the repl

UserEventManager

  • <UserEventManager>.cache: a Collection of UserEvent objects
  • <UserEventManager>.fetch(options): a Collection of UserEvent objects
    • options:
      • cache: cache the result(s). default: true
      • limit: the maximum number of results

UserEvent

  • <UserEvent>.id: the id of the event
  • <UserEvent>.eventType: the type of the event
  • <UserEvent>.post: a Post object
  • <UserEvent>.timeUpdated: when the event was last updated
  • <UserEvent>.user: a User object
  • <UserEvent>.repl: a Repl object
  • <UserEvent>.comment: a Comment object

NotificationManager

  • <NotificationManager>.cache: a Collection of Notification objects
  • <NotificationManager>.fetch(options): a Collection of Notification objects
    • options:
      • cache: cache the result(s). default: true
      • limit: the maximum number of results
      • seen: if the notifications have been seen or not. default: false
  • <NotificationManager>.markAsRead(): marks your notifications as read
  • <NotificationManager>.startEvents(): starts sending notification events for new notifications
  • <NotificationManager>.stopEvents(): stops the sending of notification events