Content Server
API endpoints for Decentraland Worlds Content Server
Returns detailed information about a deployed world including scene configuration, comms adapter, and status
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world (e.g., my-name.dcl.eth)
my-name.dcl.ethWorld information retrieved successfully
Detailed information about a world
Overall health status
Whether the world is accepting new users
World not found
GET /world/{world_name}/about HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"healthy": true,
"acceptingUsers": true,
"configurations": {
"networkId": 1,
"globalScenesUrn": [
"text"
],
"scenesUrn": [
"text"
],
"realmName": "text",
"minimap": {
"enabled": true,
"dataImage": "text",
"estateImage": "text"
},
"map": {
"minimapEnabled": true,
"sizes": [
[
1
]
]
},
"skybox": {
"fixedHour": 1,
"textures": [
"text"
]
}
},
"content": {
"synchronizationStatus": "text",
"healthy": true,
"publicUrl": "text"
},
"lambdas": {
"healthy": true,
"publicUrl": "text"
},
"comms": {
"healthy": true,
"protocol": "text",
"adapter": "text"
}
}Browse scenes in a world. Use query params for filtering and pagination.
Query (entity_id): Return the active scene with this entity ID in the requested world.
Query (x1, x2, y1, y2): Bounding box. When provided, all four must be set.
Query (limit, offset): Pagination (defaults: limit 100, offset 0).
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethBounding box min x (required with x2, y1, y2)
IPFS CIDv1 of an active scene deployment in this world
Bounding box max x (required with x1, y1, y2)
Bounding box min y (required with x1, x2, y2)
Bounding box max y (required with x1, x2, y1)
Max number of scenes to return (default 100)
Number of scenes to skip (default 0)
Ethereum address to filter scenes by deployment capabilities. Returns scenes from worlds where the specified address is either the owner or has been granted deployment permission.
Scenes and total count
Invalid request (e.g. partial bounding box)
GET /world/{world_name}/scenes HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"scenes": [
{
"worldName": "text",
"entityId": "text",
"deployer": "text",
"deploymentAuthChain": [],
"entity": {
"id": "text",
"type": "text",
"timestamp": 1,
"pointers": [
"text"
],
"content": [
{
"file": "text",
"hash": "text"
}
],
"metadata": {}
},
"parcels": [
"text"
],
"size": "text",
"createdAt": "2026-01-01T00:00:00.000Z"
}
],
"total": 1
}Query scenes with optional coordinate filter in the body. Body is validated; same query params as GET.
Body (coordinates): Required key; array can be empty. When non-empty, return only scenes that contain any of these parcel coordinates (e.g. "0,0", "-1,2").
Query (entity_id): Return the active scene with this entity ID in the requested world.
Query (x1, x2, y1, y2): Bounding box. When provided, all four must be set.
Query (limit, offset): Pagination (defaults: limit 100, offset 0).
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethBounding box min x (required with x2, y1, y2)
IPFS CIDv1 of an active scene deployment in this world
Bounding box max x (required with x1, y1, y2)
Bounding box min y (required with x1, x2, y2)
Bounding box max y (required with x1, x2, y1)
Max number of scenes to return (default 100)
Number of scenes to skip (default 0)
Ethereum address to filter scenes by deployment capabilities. Returns scenes from worlds where the specified address is either the owner or has been granted deployment permission.
Body for POST /world/{world_name}/scenes.
Return only scenes that contain any of these coordinates
Scenes and total count
Invalid request (e.g. invalid coordinate format, partial bounding box)
POST /world/{world_name}/scenes HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 24
{
"coordinates": [
"text"
]
}{
"scenes": [
{
"worldName": "text",
"entityId": "text",
"deployer": "text",
"deploymentAuthChain": [],
"entity": {
"id": "text",
"type": "text",
"timestamp": 1,
"pointers": [
"text"
],
"content": [
{
"file": "text",
"hash": "text"
}
],
"metadata": {}
},
"parcels": [
"text"
],
"size": "text",
"createdAt": "2026-01-01T00:00:00.000Z"
}
],
"total": 1
}Undeploy a single scene at the given parcel coordinate. Requires signed fetch and world ownership (or world-wide deployment permission).
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethParcel coordinate (e.g. 0,0 or -1,2)
^-?\d+,-?\d+$Scene undeployed successfully
No content
Unauthorized
World or scene not found
DELETE /world/{world_name}/scenes/{coordinate} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
No content
Deploy a new scene to a world. The deployment must include entity metadata and all content files. Requires authentication via auth chain.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The entity ID (IPFS hash)
bafkreiabi74jam7uh5gmm6x4hox664j53bmt7dy4alrltkhyj3ozcxs2iuContent files referenced by the entity
Entity deployed successfully
Unix timestamp in milliseconds
Deployment confirmation message
Invalid request or deployment failed validation
Multipart upload or post-body deployment processing timed out
Scene replacement authorization changed during deployment; retry authorization and deployment
Client closed the request before deployment processing completed. The response is typically unobservable by the disconnected client but is visible to proxies and tests.
Multipart upload capacity is temporarily exhausted or temporary storage is unavailable
POST /entities HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Content-Type: multipart/form-data
Accept: */*
Content-Length: 109
{
"entityId": "bafkreiabi74jam7uh5gmm6x4hox664j53bmt7dy4alrltkhyj3ozcxs2iu",
"ANY_ADDITIONAL_PROPERTY": "binary"
}{
"creationTimestamp": 1,
"message": "text"
}Remove a deployed scene from a world. Requires signed fetch authentication.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world to undeploy
my-name.dcl.ethEntity undeployed successfully
No content
Unauthorized - invalid signature
World not found
DELETE /entities/{world_name} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
No content
Retrieve information about active entities based on provided pointers
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
List of pointers to query
Active entities retrieved successfully
Scene entity metadata
Entity ID (IPFS hash)
Entity type (e.g., 'scene')
Unix timestamp in milliseconds
Pointers (coordinates or names)
Scene metadata
POST /entities/active HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 21
{
"pointers": [
"text"
]
}Active entities retrieved successfully
[
{
"id": "text",
"type": "text",
"timestamp": 1,
"pointers": [
"text"
],
"content": [
{
"file": "text",
"hash": "text"
}
],
"metadata": {}
}
]Retrieve list of available content hashes
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Available content retrieved successfully
GET /available-content HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
Available content retrieved successfully
{
"cid": [
"text"
]
}Retrieve a content file by its IPFS hash
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
IPFS hash of the content file
bafkreiabi74jam7uh5gmm6x4hox664j53bmt7dy4alrltkhyj3ozcxs2iuContent file retrieved successfully
Content not found
GET /ipfs/{hashId} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
binaryCheck if a content file exists without retrieving it
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
IPFS hash of the content file
Content exists
No content
Content not found
HEAD /ipfs/{hashId} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
No content
Retrieve a content file by its hash
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Hash of the content file
bafkreiabi74jam7uh5gmm6x4hox664j53bmt7dy4alrltkhyj3ozcxs2iuContent file retrieved successfully
Content not found
GET /contents/{hashId} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
binaryCheck if a content file exists without retrieving it
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Hash of the content file
Content exists
No content
Content not found
HEAD /contents/{hashId} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
No content
Retrieve the permissions configuration for a world
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethPermissions retrieved successfully
Ethereum address of the world owner
0x1234567890123456789012345678901234567890GET /world/{world_name}/permissions HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
Permissions retrieved successfully
{
"permissions": {
"deployment": {
"type": "allow-list",
"wallets": [
"text"
],
"communities": [
"text"
]
},
"access": {
"type": "unrestricted"
},
"streaming": {
"type": "unrestricted"
}
},
"owner": "0x1234567890123456789012345678901234567890",
"summary": {
"ANY_ADDITIONAL_PROPERTY": [
{
"permission": "text",
"world_wide": true,
"parcel_count": 1
}
]
}
}/world/{world_name}/permissions/{permission_name}
Set the permission type for a specific permission (deployment, access, or streaming). Requires signed fetch and world ownership.
Auth chain metadata (not HTTP body): The permission configuration is not sent as a POST body. It is sent as signed request metadata (auth chain) per Signed Fetch (ADR-44). The client signs a payload whose structure matches the schema below; the server reads that payload from the auth chain, not from the request body. Do not send a body for this request—use the schema only as the expected format of the auth chain metadata.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethThe permission to configure
Permission configured successfully
No content
Invalid permission configuration
Unauthorized
POST /world/{world_name}/permissions/{permission_name} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 23
{
"type": "unrestricted"
}No content
Add community to access allow-list
Add a single community to the world's access allow-list. The world must have allow-list access type. The signer must be a member of the community being added (validated via social service).
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethCommunity ID to add to the allow-list
Community added successfully
No content
Invalid request, world not allow-list, signer not a member of the community, or allow-list limit exceeded
Unauthorized
PUT /world/{world_name}/permissions/access/communities/{communityId} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
No content
Remove community from access allow-list
Remove a single community from the world's access allow-list. The world must have allow-list access type.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethCommunity ID to remove from the allow-list
Community removed successfully
No content
Invalid request or world not configured as allow-list
Unauthorized
DELETE /world/{world_name}/permissions/access/communities/{communityId} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
No content
/world/{world_name}/permissions/{permission_name}/{address}
Add an Ethereum address to the allow list for a specific permission. Requires signed fetch and world ownership.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethThe permission to modify
Ethereum address to add
0x1234567890123456789012345678901234567890Address added successfully
No content
Invalid request or permission not configured as allow-list
Unauthorized
PUT /world/{world_name}/permissions/{permission_name}/{address} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
No content
/world/{world_name}/permissions/{permission_name}/{address}
Remove an Ethereum address from the allow list for a specific permission. Requires signed fetch and world ownership.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethThe permission to modify
Ethereum address to remove
0x1234567890123456789012345678901234567890Address removed successfully
No content
Invalid request or address not in allow list
Unauthorized
DELETE /world/{world_name}/permissions/{permission_name}/{address} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
No content
GET /world/{world_name}/permissions/{permission_name}/address/{address}/parcels
Get paginated parcels for a specific address and permission (deployment or streaming). Use query params limit/offset for pagination. Optional bounding box filter via x1, y1, x2, y2 (all four required if used).
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
my-name.dcl.eth0x1234567890123456789012345678901234567890Bounding box min x (required with x2, y1, y2)
Parcels and total count
Invalid request (e.g. invalid address, partial bounding box)
GET /world/{world_name}/permissions/{permission_name}/address/{address}/parcels HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"total": 1,
"parcels": [
"text"
]
}POST /world/{world_name}/permissions/{permission_name}/address/{address}/parcels
Add parcels to an existing permission for an address (deployment or streaming). Requires signed fetch and world ownership. Request body is JSON with parcels array.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
my-name.dcl.eth0x1234567890123456789012345678901234567890Request body for adding or removing parcels to/from a permission (POST/DELETE address parcels).
Parcel coordinate (e.g. "0,0", "-1,2")
Parcels added successfully
No content
Invalid request (e.g. invalid parcels)
Unauthorized
POST /world/{world_name}/permissions/{permission_name}/address/{address}/parcels HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 20
{
"parcels": [
"text"
]
}No content
DELETE /world/{world_name}/permissions/{permission_name}/address/{address}/parcels
Remove parcels from an existing permission for an address. Requires signed fetch and world ownership. Request body is JSON with parcels array.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
my-name.dcl.eth0x1234567890123456789012345678901234567890Request body for adding or removing parcels to/from a permission (POST/DELETE address parcels).
Parcel coordinate (e.g. "0,0", "-1,2")
Parcels removed successfully
No content
Invalid request (e.g. invalid parcels)
Unauthorized
DELETE /world/{world_name}/permissions/{permission_name}/address/{address}/parcels HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 20
{
"parcels": [
"text"
]
}No content
Retrieve the settings configuration for a world, including spawn coordinates
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethWorld settings retrieved successfully
World settings as returned by the settings endpoints, in snake_case.
Do not treat the WORLD_SETTINGS_CHANGED SNS event as an equivalent of this object. That event is a trigger whose camelCase payload is deliberately partial: it never carries settings_version or spawn_coordinates, and events published for an access change carry only the world name and access type. Read this endpoint for the full, current values.
The title of the world displayed in Places
My Awesome WorldA description of the world displayed in Places
A beautiful world with amazing experiencesContent rating for the world
TPossible values: The parcel coordinate where players will spawn. Must be within the world shape rectangle (the bounding box covering all deployed scene parcels). Does not need to be on a specific scene parcel, just anywhere within the rectangle. Supports both positive and negative coordinates (e.g., "10,20" or "-5,-10").
Outside the settings_version domain, in every direction: a deploy or undeploy can change or clear it without advancing the version, and so can an update to this endpoint that changes nothing else. Consumers that mirror the spawn point must follow the WORLD_SPAWN_COORDINATE_SET and undeployment events; the settings version will not tell them it moved. The version deliberately says nothing about spawn rather than covering it for some sources and not others, which would invite consumers to depend on it.
10,20Pattern: ^-?\d+,-?\d+$Fixed skybox time in seconds. Null to use dynamic day/night cycle.
43200Categories/tags for the world
["game","adventure"]Whether the world is single player only. Reports the effective value: when neither the owner nor any deployed scene set it, the default (false) is returned.
falseWhether the world should be shown in Places. Reports the effective value: when neither the owner nor any deployed scene set it, the default (true) is returned.
trueContent hash of the world thumbnail. Fetch it from /contents/{hash}.
bafkreiabcdef123456Current access type for the world. Exposed alongside settings_version so consumers that mirror world visibility derive it from authoritative state, ordered by the same version, instead of from a WORLD_SETTINGS_CHANGED payload that carries no ordering relationship with it.
unrestrictedPossible values: Monotonic per-world version, incremented under the world row lock on every change to the owner-and-scene settings above (title, description, content_rating, skybox_time, categories, single_player, show_in_places, thumbnail_hash and access_type). It deliberately excludes spawn_coordinates — see that field.
WORLD_SETTINGS_CHANGED is a trigger, not a data feed: its payload is a snapshot taken at publish time and the topic delivers out of order, so a consumer that mirrors settings should re-read this endpoint on every event and persist what it returns, never the payload.
Persist this version alongside the mirrored values and apply an update only when the incoming version is greater than the stored one. Equality means the response describes state already applied, so it is a no-op for a consumer that re-reads and replaces state wholesale, and it must be rejected by any consumer that merges partial fields, since two different payloads can share a version.
7World not found
GET /world/{world_name}/settings HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"title": "My Awesome World",
"description": "A beautiful world with amazing experiences",
"content_rating": "T",
"spawn_coordinates": "10,20",
"skybox_time": 43200,
"categories": [
"game",
"adventure"
],
"single_player": false,
"show_in_places": true,
"thumbnail_hash": "bafkreiabcdef123456",
"access_type": "unrestricted",
"settings_version": 7
}Update world settings via multipart/form-data. Requires signed fetch and world ownership. All fields are optional to allow partial updates.
Settings include title, description, content rating, spawn coordinates, skybox time, categories, single player mode, show in places, and a thumbnail image.
For spawn coordinates, they must be within the world shape rectangle if the world has deployed scenes. Worlds without deployments can have most settings pre-defined (except spawn coordinates).
Clearing nullable fields:
Send
skybox_timewith the string value"null"to reset skybox time (use dynamic day/night cycle).Send
categorieswith the string value"null"to clear all categories (stores an empty array).
Validation:
titlemust be between 3 and 100 characters. Empty strings are rejected with a 400 error.descriptionmust be between 3 and 1000 characters. Empty strings are rejected with a 400 error.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
The name of the world
my-name.dcl.ethWorld title. Must be between 3 and 100 characters. Empty strings are rejected.
World description. Must be between 3 and 1000 characters. Empty strings are rejected.
Content rating
Spawn coordinates (e.g., "10,20")
^-?\d+,-?\d+$Fixed skybox time as a number string, or the string "null" to reset to dynamic day/night cycle
Category values as repeated multipart fields, or the string "null" to clear all categories (stores an empty array)
Single player mode ("true" or "false")
Show in places ("true" or "false")
Thumbnail image file (max 1MB)
World settings updated successfully
World settings updated successfullyInvalid request - validation failed (e.g., spawn coordinates outside world bounds)
Unauthorized - invalid signature
Forbidden - user does not own the world name
Multipart upload timed out
Multipart upload capacity is temporarily exhausted or temporary storage is unavailable
PUT /world/{world_name}/settings HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Content-Type: multipart/form-data
Accept: */*
Content-Length: 197
{
"title": "text",
"description": "text",
"content_rating": "text",
"spawn_coordinates": "text",
"skybox_time": "text",
"categories": "text",
"single_player": "text",
"show_in_places": "text",
"thumbnail": "binary"
}{
"message": "World settings updated successfully",
"settings": {
"title": "My Awesome World",
"description": "A beautiful world with amazing experiences",
"content_rating": "T",
"spawn_coordinates": "10,20",
"skybox_time": 43200,
"categories": [
"game",
"adventure"
],
"single_player": false,
"show_in_places": true,
"thumbnail_hash": "bafkreiabcdef123456",
"access_type": "unrestricted",
"settings_version": 7
}
}Retrieve a paginated list of worlds with optional search, sorting, and authorized deployer filtering.
This endpoint supports:
Pagination: Use
limitandoffsetquery parametersSearch: Full-text search across world name, title, and description
Sorting: Sort by world name or last deployment time
Authorized deployer filtering: Filter by worlds where an address can deploy (is owner or has deployment permission)
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Maximum number of worlds to return (default 100)
100Number of worlds to skip (default 0)
0Full-text search query. Searches across world name (highest priority), title (medium priority), and description (lowest priority).
Field to sort by (default "name")
namePossible values: Sort direction (default "asc")
ascPossible values: Ethereum address to filter worlds by deployment capabilities. Returns worlds where the specified address is either the owner or has been granted deployment permission.
Filter worlds by whether they have deployed scenes. When true, returns only worlds with at least one deployed scene. When false, returns only worlds with no deployed scenes. When not provided, returns all worlds regardless of deployment status.
Paginated list of worlds
Paginated response containing worlds information
Total number of worlds matching the query (for pagination)
Invalid request (e.g., invalid sort or order parameter)
GET /worlds HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"worlds": [
{
"name": "my-world.dcl.eth",
"owner": "0x1234567890123456789012345678901234567890",
"title": "My Awesome World",
"description": "A beautiful virtual world",
"shape": {
"x1": 0,
"x2": 2,
"y1": 0,
"y2": 1
},
"content_rating": "T",
"spawn_coordinates": "1,1",
"skybox_time": 12,
"categories": [
"game",
"adventure"
],
"single_player": false,
"show_in_places": true,
"thumbnail_hash": "bafkreiabi74jam7uh5gmm6x4hox664j53bmt7dy4alrltkhyj3ozcxs2iu",
"last_deployed_at": "2024-01-15T10:30:00.000Z",
"blocked_since": null
},
{
"name": "empty-world.dcl.eth",
"owner": "0xabcdef1234567890abcdef1234567890abcdef12",
"title": "Empty World",
"description": null,
"shape": null,
"content_rating": null,
"spawn_coordinates": null,
"skybox_time": null,
"categories": null,
"single_player": null,
"show_in_places": null,
"thumbnail_hash": null,
"last_deployed_at": null,
"blocked_since": null
}
],
"total": 42
}Retrieve storage statistics for a wallet address
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Ethereum wallet address
0x1234567890123456789012345678901234567890Wallet statistics retrieved successfully
Storage statistics for a wallet
Ethereum address
Total used space in bytes as string
Maximum allowed space in bytes as string
ISO timestamp when wallet was blocked
Invalid wallet address
GET /wallet/{wallet}/stats HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"wallet": "text",
"dclNames": [
{
"name": "text",
"size": "text"
}
],
"ensNames": [
{
"name": "text",
"size": "text"
}
],
"usedSpace": "text",
"maxAllowedSpace": "text",
"blockedSince": "2026-01-01T00:00:00.000Z"
}Retrieve the world that a wallet is currently connected to
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Ethereum wallet address
0x1234567890123456789012345678901234567890Connected world retrieved successfully
Name of the connected world
GET /wallet/{wallet}/connected-world HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
Connected world retrieved successfully
{
"world": "text"
}Retrieve list of domains that the authenticated wallet can contribute to. Requires signed fetch.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Contributable domains retrieved successfully
Unauthorized
GET /wallet/contribute HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"domains": [
{
"name": "text",
"user_permissions": [
"text"
],
"owner": "text",
"size": "text"
}
],
"count": 1
}Retrieve the current status of the content server and communication services
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Server status retrieved successfully
Server status information
GET /status HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
Server status retrieved successfully
{
"content": {
"commitHash": "text",
"worldsCount": {
"ens": 1,
"dcl": 1
}
},
"comms": {
"adapterType": "text",
"statusUrl": "text",
"commitHash": "text",
"users": 1,
"rooms": 1,
"timestamp": 1
}
}Retrieve an index of all deployed worlds (deprecated; prefer /worlds for listing).
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Index retrieved successfully
ISO 8601 timestamp of last index update
GET /index HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
Index retrieved successfully
{
"data": [
{
"name": "text",
"scenes": [
{
"id": "text",
"title": "text",
"description": "text",
"thumbnail": "text",
"pointers": [
"text"
],
"timestamp": 1,
"runtimeVersion": "text"
}
]
}
],
"lastUpdated": "2026-01-01T00:00:00.000Z"
}Retrieve live data about active worlds and users (from comms adapter status).
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Live data retrieved successfully
ISO 8601 timestamp of status snapshot
GET /live-data HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
Live data retrieved successfully
{
"data": {
"totalUsers": 1,
"perWorld": {
"ANY_ADDITIONAL_PROPERTY": 1
}
},
"lastUpdated": "2026-01-01T00:00:00.000Z"
}Get comms adapter connection string for a world. Requires signed fetch. Auth metadata may include optional secret for access. Returns fixedAdapter.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
World name (e.g. my-name.dcl.eth)
Comms adapter retrieved successfully
Access denied
World or scene not found
POST /worlds/{worldName}/comms HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"fixedAdapter": "text"
}Get comms adapter connection string for a specific scene in a world. Requires signed fetch. Auth metadata may include optional secret for access. Returns fixedAdapter.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Scene entity ID
Comms adapter retrieved successfully
Access denied
World or scene not found
POST /worlds/{worldName}/scenes/{sceneId}/comms HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"fixedAdapter": "text"
}Retrieve communication adapter connection string for a room. Requires signed fetch (auth metadata may include secret for access). Returns fixedAdapter.
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
Room identifier (prefix + world name)
Adapter information retrieved successfully
Connection string for the comms adapter
Unauthorized
World not found
POST /get-comms-adapter/{roomId} HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Accept: */*
{
"fixedAdapter": "text"
}Webhook endpoint for LiveKit events
Signed fetch authentication using Decentraland's ADR-44 specification. Multiple headers are used to provide the authentication chain.
LiveKit webhook payload
Webhook processed successfully
No content
POST /livekit-webhook HTTP/1.1
Host: worlds-content-server.decentraland.org
X-Identity-Auth-Chain-*: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 2
{}Webhook processed successfully
No content
Last updated