#user #screeps #api #http-api #game-server #wrapper #http-request


Fully typed and tested wrapper over the Screeps Game's HTTP API

7 unstable releases (3 breaking)

0.6.0 Jul 19, 2019
0.5.1 May 13, 2019
0.4.1 Jan 8, 2018
0.3.2 Dec 28, 2017

#5 in #screeps

MIT license

11K SLoC


Linux Build Status Windows Build Status

A Rust library for using the Screeps HTTP API.

Screeps is a true programming MMO where users uploading JavaScript code to power their online empires. rust-screeps-api can connect to the official server, and any private server instances run by users.

rust-screeps-api uses hyper to run http requests and serde to parse json results.


extern crate screeps_api;

use screeps_api::SyncApi;

let mut api = SyncApi::new().unwrap();

api.login("username", "password").unwrap();

let my_info = api.my_info().unwrap();

println!("Logged in with user ID {}!", my_info.user_id);

Documentation is located at https://docs.rs/screeps-api/.

Unofficial API documentation for:

What's implemented

  • Logging in
  • Getting all leaderboard information
  • Getting room terrain
  • Checking room status
  • Getting room overview info
  • Getting logged in user's info
  • Getting rooms where PvP recently occurred
  • Websocket connections:
    • Getting user CPU and Memory usage each tick
    • Getting a map overview of a room
    • Getting new message notifications
    • Getting console messages
    • Parts of getting room detailed updates
      • Almost all room objects are parsed
      • Flags are parsed
      • RoomVisuals are not parsed

What isn't implemented

  • Market API
  • Messaging API
  • Detailed user information API
  • Game manipulation API
  • Room history API
  • Parsing room visuals in room socket updates.


rust-screeps-api has both unit tests for parsing sample results from each endpoint, and integration tests which make calls to the official server.

Environmental variables used when testing:

  • SCREEPS_API_USERNAME: the username to log in with for doing authenticated tests
  • SCREEPS_API_PASSWORD: the password to login with for doing authenticated tests
  • All variables can also be placed into a .env file (parsed using the dotenv crate)


  • cargo test to perform all tests, including calls to https://screeps.com with provided login details.
  • cargo test parse to only perform parsing unit tests. This can be performed offline.
  • cargo test -- --skip auth to test both parsing and all unauthenticated calls to the official server.


~293K SLoC