Skip to main content
Question

Sandbox Data - Skysat

  • March 27, 2026
  • 0 replies
  • 10 views

Lancelloti
Forum|alt.badge.img

Hello All. How you doing?

I'm trying to develop an JS node application using Planet API but I'm falling to get any data from SkySat Sandbox.

According to sandbox docs, the city of São Mateus - SP, Brazil should be accessible in Sandbox from 2021 - 2022. Altought, everytime I try to set and order it fails saying: "message": "no access to assets: SkySatScene/20210105_131542_ssc12d3_0014/[basic_analytic basic_analytic_rpc basic_analytic_udm]", I've tried a bunch of visual names and none of it seems to work.

Here is my search function:

export async function searchImages() {
const geometry: {
"type": "Polygon",
"coordinates": [
[
[
-46.480481779234,
-23.611431091069008
],
[
-46.480481779234,
-23.613647803458363
],
[
-46.47597059136797,
-23.613647803458363
],
[
-46.47597059136797,
-23.611431091069008
],
[
-46.480481779234,
-23.611431091069008
]
]
],
},
const startDate: '2021-01-05',
const endDate: '2021-12-31'
const url = 'https://api.planet.com/data/v1/quick-search';
const requestBody = {
"item_types": ["SkySatScene"],
"filter": {
"type": "AndFilter",
"config": [
{
"type": "GeometryFilter",
"field_name": "geometry",
"config": geometry
},
{
"type": "DateRangeFilter",
"field_name": "acquired",
"config": {
"gte": `${startDate}T00:00:00Z`,
"lte": `${endDate}T23:59:59Z`
}
}
]
}
};

And here my order function:

 

import 'dotenv/config';

const API_KEY = process.env.PLANET_API_KEY;
const authHeader = 'Basic ' + Buffer.from(`${API_KEY}:`).toString('base64');

export async function createOrder(imageIds, geometry, orderName) {
const url = 'https://api.planet.com/compute/ops/orders/v2';

if (!imageIds || imageIds.length === 0) {
throw new Error("Erro: Lista de IDs de imagem está vazia.");
}

const orderBody = {
name: orderName,
products: [
{
item_ids: imageIds,
item_type: "SkySatScene",
product_bundle: "basic_analytic"
}
],
};

const response = await fetch(url, {
method: 'POST',
headers: {
'Authorization': authHeader,
'Content-Type': 'application/json'
},
body: JSON.stringify(orderBody)
});

if (!response.ok) {
// A Planet envia o motivo do erro no corpo da resposta
const errorDetail = await response.json();
console.error("Detalhes do erro da Planet:", JSON.stringify(errorDetail, null, 2));
throw new Error(`Erro no pedido: ${response.status} ${response.statusText}`);
}

return await response.json();
}

Can someone gitve me hint to make it work?