How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Upland Developers API

REST API for approved Upland third-party applications. Maps application users to Upland user IDs through a connection-code flow, exposes read-only player data (profile, balances, properties, NFTs, travels), manages an application-scoped escrow container (create, lock/unlock, refresh expiration, resolve, refund, remove transaction), runs Rumble tournaments (settings, create, join, scores, prize distribution, scoreboard, resolve, cancel), and queries Dev Shops, cities, neighborhoods, collections, buildings, tracks and treasures history. Application-level calls use HTTP Basic auth (App ID + Secret Key); calls acting on behalf of a player use a Bearer JWT delivered to the application's webhook URL when the player authorizes the connection.

This API exposes 46 operations across 44 paths, organized into 7 resource areas, and defines 67 schemas. It is described by OpenAPI 3.0.0, at version 1.0.0.

Requests are made against a single base URL, https://api.prod.upland.me/developers-api.

46 operations 44 paths 67 schemas 1 DELETE26 GET3 PATCH16 POST

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.0.0
API Version
1.0.0
Base URL
https://api.prod.upland.me/developers-api
Authentication
HTTP Basic, HTTP Bearer
Resource Areas
7

Authentication & Security 2

Upland Developers API declares 2 security schemes for authenticating requests. It accepts HTTP basic authentication (basic). It accepts HTTP bearer tokens (bearer).

  • basic — Basic access authentication is a method to provide a username and password when making a request. In basic HTTP authentication, a request contains a header fie…
  • bearer — You must provide a Code to your users generated across the endpoint /auth/opt/init. When Upland User grants access for the developer App, a webhook will be sen…

Paths & Operations 46

Across 44 paths, the API surfaces 46 operations — 1 DELETE, 26 GET, 3 PATCH, 16 POST. They span 7 resource areas: Authentication, Upland User, Escrow Containers, Generic, Dev Shops, Application Usage, Tournaments. Each is listed below with its method, path, parameters, and response codes.

Authentication 1
POST
/auth/otp/init
Create Connection Code
AuthController_otpInit → 201404
Upland User 6
GET
/user/assets/nfts
List user's NFTs
UserController_getNfts 4 params → 200
GET
/user/assets/properties
List user's properties
UserController_getProperties 4 params → 200
GET
/user/balances
Get user's balances
UserController_getBalances → 200
POST
/user/join
Join escrow container
UserController_putAssetsInEscrowContainer body → 200
GET
/user/profile
Get user's profile
UserController_getUserProfile → 200
GET
/user/travels
List user's travels
UserController_getTravels 2 params → 200
Escrow Containers 9
POST
/containers
Create escrow container
EscrowController_create body → 201
GET
/containers/{containerId}
Get escrow container
EscrowController_getContainer 1 param → 200
POST
/containers/{containerId}/join
Join escrow container (permission delegation required)
EscrowController_putAssetsInEscrowContainerWithPermissionDelegation 1 param body → 200
POST
/containers/{containerId}/lock
Lock escrow container
EscrowController_lockContainer 1 param → 204
POST
/containers/{containerId}/unlock
Unlock escrow container
EscrowController_unlockContainer 1 param → 204
POST
/containers/{containerId}/refresh-expiration-time
Refresh escrow container expiration time
EscrowController_refresh 1 param → 204
POST
/containers/{containerId}/refund
Refund escrow container
EscrowController_refund 1 param → 200
POST
/containers/{containerId}/resolve
Resolve escrow container
EscrowController_resolve 1 param body → 200
DELETE
/containers/{containerId}/transactions/{transactionId}
Remove escrow container transaction
EscrowController_removeTransaction 2 params → 204
Generic 11
GET
/tracks
List tracks
TracksController_getTracks 1 param → 200404
GET
/tracks/{id}
Get track
TracksController_getTrackById 1 param → 200400404
GET
/tracks/{id}/buildings
Get track buildings
TracksController_getTrackBuildingsById 1 param → 200404
POST
/buildings
Search for buildings
BuildingsController_getBuildingsByBoundaries body → 200
GET
/cities
List available cities
CitiesController_getCities → 200
GET
/propertiesdeprecated
List properties (Deprecated)
PropertiesController_getProperties 4 params → 200
GET
/v2/properties
List properties
PropertiesController_getPropertiesWithNextPagePagination 4 params → 200
GET
/properties/{propertyId}
Get property
PropertiesController_getPropertyById 1 param → 200
GET
/neighborhoods
List neighborhoods
NeighborhoodsController_getNeighborhoods 2 params → 200
GET
/collections
List collections
CollectionsController_getCollections → 200
GET
/treasures-history
List treasures history
TreasuresController_getTreasuresHistory 3 params → 200
Dev Shops 2
GET
/devshops
List dev shops
DevShopsController_getDevShopsByApplication → 200
GET
/devshops/{devShopId}/check-user-intersection/{userId}
Check user and dev shop intersection
DevShopsController_getUserDevshopIntersectionChecking 2 params → 200
Application Usage 1
GET
/app-usage/webhook-calls
App Webhook calls
AppUsageController_findWebhookCalls 7 params → 200
Tournaments 16
GET
/rumble-tournament-settings
List rumble tournament settings
RumbleTournamentSettingsController_findRumbleTournamentSettings 5 params → 200
POST
/rumble-tournament-settings
Create rumble tournament settings
RumbleTournamentSettingsController_createRumbleTournamentSettings body → 201
GET
/rumble-tournament-settings/{id}
Get rumble tournament settings
RumbleTournamentSettingsController_getRumbleTournamentSettings 1 param → 200
PATCH
/rumble-tournament-settings/{id}
Edit rumble tournament settings
RumbleTournamentSettingsController_editRumbleTournamentSettings 1 param body → 200
POST
/rumble-tournaments
Create new rumble tournament
RumbleTournamentsController_create body → 201
PATCH
/rumble-tournaments/{id}/start
Start a rumble tournament
RumbleTournamentsController_startTournament 1 param → 204
POST
/rumble-tournaments/{id}/scores
Register participant scores for a rumble tournament
RumbleTournamentsController_registerScores 1 param body → 204
POST
/rumble-tournaments/{id}/resolve
Resolve rumble tournament
RumbleTournamentsController_resolveTournament 1 param body → 200
POST
/rumble-tournaments/{id}/cancel
Cancel rumble tournament
RumbleTournamentsController_cancelTournament 1 param → 200
GET
/rumble-tournaments/{id}
Find rumble tournament
RumbleTournamentsController_findRumbleTournament 1 param → 200
POST
/rumble-tournaments/{id}/join
Join a rumble tournament
RumbleTournamentsController_join 1 param → 204
PATCH
/rumble-tournaments/{id}/close-registration
Close a rumble tournament registration
RumbleTournamentsController_closeRumbleTournamentRegistration 1 param → 204
GET
/rumble-tournaments/{id}/prize-distribution
Find rumble tournament current prize distribution
RumbleTournamentsController_getRumbleTournamentCurrentPrizeDistribution 1 param → 200
GET
/rumble-tournaments/{id}/participants
Get rumble tournament participants list
RumbleTournamentsController_findRumbleTournamentParticipants 4 params → 200
GET
/rumble-tournaments/{id}/participants/{userId}
Find rumble tournament participant information
RumbleTournamentsController_getRumbleTournamentParticipantInfo 2 params → 200
GET
/rumble-tournaments/{id}/scoreboard
Find rumble tournament scoreboard
RumbleTournamentsController_getRumbleTournamentScoreboard 1 param → 200

Schemas 67

The contract defines 67 schemas that model the data the API accepts and returns. The most detailed are UserProfileResponseDto (12 properties), RumbleTournamentSettingsResponseDto (12 properties), TrackWithDetailsResponseDto (12 properties), RumbleTournamentResponseDto (10 properties). Each schema is shown below with its type and property counts.

OtpInitResposeDto
object
2 properties 2 required
HttpErrorDto
object
3 properties 2 required
LandVehicleLODResponseDto
object
3 properties 3 required
LandVehicleAttributeResponseDto
object
3 properties 2 required
LandVehicleMetadataResponseDto
object
3 properties 3 required
UserNftResponseDto
object
9 properties 5 required
UserNftsListResponseDto
object
4 properties 3 required
CityResponseDto
object
2 properties 2 required
NeighborhoodResponseDto
object
2 properties 2 required
CollectionResponseDto
object
2 properties 2 required
UserPropertyResponseDto
object
7 properties 6 required
UserPropertiesListResponseDto
object
4 properties 3 required
UserBalancesResponseDto
object
3 properties 3 required
NftRequestDto
object
2 properties 2 required
UserJoinContainerRequestDto
object
3 properties 1 required
JoinContainerResponseDto
object
2 properties 1 required
HomeAddressResponseDto
object
2 properties 2 required
UserProfileResponseDto
object
12 properties 10 required
UserTravelResponseDto
object
5 properties 5 required
UserTravelsListResponseDto
object
4 properties 3 required
CreateContainerRequestDto
object
2 properties
ContainerResponseDto
object
6 properties 4 required
AssetTransferRequestResponseDto
object
7 properties 5 required
ContainerWithAssetsResponseDto
object
8 properties 6 required
JoinContainerRequestDto
object
2 properties
ContainerResolutionResponseDto
object
1 property 1 required
ContainerResolutionTransferRequestDto
object
5 properties 2 required
ContainerResolutionRequestDto
object
1 property 1 required
TrackResponseDto
object
9 properties 9 required
TracksListResponseDto
object
1 property 1 required
TrackWithDetailsResponseDto
object
12 properties 12 required
BuildingResponseDto
object
10 properties 10 required
BuildingsListResponseDto
object
1 property 1 required
BuildingsRequestDto
object
1 property 1 required
CitiesListResponseDto
object
1 property 1 required
PropertyResponseDto
object
7 properties 6 required
PropertiesListResponseDto
object
4 properties 3 required
PropertiesListWithNextPagePaginationResponseDto
object
2 properties 1 required
NeighborhoodsListResponseDto
object
1 property 1 required
CollectionsListResponseDto
object
1 property 1 required
TreasureHistoryResponseDto
object
6 properties 6 required
TreasuresHistoryListResponseDto
object
1 property 1 required
CoordinatesResponseDto
object
2 properties 2 required
DevShopLocationResponseDto
object
5 properties 5 required
DevShopResponseDto
object
5 properties 5 required
DevShopsListResponseDto
object
1 property 1 required
UserDevShopIntersectionCheckResponseDto
object
1 property 1 required
AppWebhookCallDto
object
7 properties 6 required
AppWebhookCallsResponseDto
object
4 properties 3 required
PrizeDistributionRuleResponseDto
object
2 properties 2 required
FeeDistributionDto
object
2 properties 2 required
RumbleTournamentSettingsResponseDto
object
12 properties 10 required
FindRumbleTournamentSettingsListResponseDto
object
4 properties 3 required
CreateRumbleTournamentSettingsRequestDto
object
8 properties 6 required
EditRumbleTournamentSettingsRequestDto
object
8 properties
CreateRumbleTournamentRequestDto
object
3 properties 1 required
RumbleTournamentSettingsSnapshotResponseDto
object
6 properties 6 required
RumbleTournamentResponseDto
object
10 properties 7 required
ScoreDto
object
2 properties 2 required
RegisterRumbleTournamentScoresRequestDto
object
1 property 1 required
ResolveRumbleTournamentRequestDto
object
1 property
PrizeDistributionByPlaceDto
object
5 properties 5 required
ScoreboardResponseDto
object
5 properties 4 required
DistributionResponseDto
object
2 properties 2 required
GetRumbleTournamentCurrentPrizeDistributionResponseDto
object
3 properties 3 required
RumbleTournamentParticipantResponseDto
object
9 properties 5 required
FindRumbleTournamentParticipantsListResponseDto
object
4 properties 3 required

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

upland-developers-api-openapi.json Raw ↑
Where this information came from

This is an independent, third-party profile of Upland Developers API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.