Plantas

API de plantas

Transforma um esboço, foto ou digitalização de uma planta numa planta 2D limpa e editável com uma única chamada. 5 créditos por planta, guardada no imóvel que escolheres.

Envia um esboço, uma foto ou uma digitalização de uma planta e recebe uma planta 2D limpa. A Pedra lê as paredes, portas, janelas e nomes das divisões, endireita-as e desenha uma planta com as medidas escritas no desenho. A planta fica guardada num imóvel, por isso os teus utilizadores podem abri-la na Pedra e editá-la como se a tivessem desenhado eles.

Custo

5 créditos por planta, cobrados só quando sai uma planta. Uma leitura que falha é grátis. Se a conta tiver menos de 5 créditos, a chamada é recusada antes de começar, com um 403 que o indica.

Onde fica guardada a planta

Tal como as imagens e os vídeos: envia propertyId para adicionar a planta a um dos teus imóveis (de list_properties ou create_property). Se não o enviares, a Pedra cria um imóvel novo com o nome de propertyName. A resposta inclui sempre o propertyId e um appUrl que o abre na Pedra.

Criar uma planta

POST/api/create_floor_plan

Ler um desenho demora cerca de 1 a 3 minutos. Por defeito a chamada espera e devolve a planta terminada (a ligação mantém-se aberta enquanto trabalha). Envia "waitForCompletion": false para receber um floorPlanId de imediato e consultar floor_plan_status.

apiKeystringobrigatório
A tua API key.
imageUrlstringobrigatório
O esboço, foto ou digitalização da planta: um URL público ou uma data URL em base64. JPEG, PNG ou WebP, até 12 MB.
propertyIdstring
Imóvel onde guardar a planta. Se não o enviares, é criado um novo.
propertyNamestring
Nome do imóvel novo, quando não se envia propertyId. Por defeito, o nome da planta.
namestring
Nome da planta, impresso por baixo, p. ex. "Rés-do-chão".
Default: Floor plan
unitsstring
Unidades das medidas.
Values: metric imperial
Default: metric
waitForCompletionboolean
false devolve um floorPlanId de imediato; consulta floor_plan_status para o resultado.
Default: true
curl -X POST https://app.pedra.ai/api/create_floor_plan \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "imageUrl": "https://example.com/sketches/calle-mayor-12.jpg",
    "propertyId": "196e742a-5b0d-4c9e-8a3f-7e2b1c6d9f04",
    "name": "Ground floor"
  }'

Resposta

JSON
{
  "message": "Floor plan created",
  "floorPlanId": "Ae6pgFD6yZyyhpzZH",
  "propertyId": "196e742a-5b0d-4c9e-8a3f-7e2b1c6d9f04",
  "name": "Ground floor",
  "status": "ready",
  "imageUrl": "https://img.pedra.ai/floorplan-source-QiqMn78cKtNHk4LpF",
  "appUrl": "https://app.pedra.ai/?projectId=196e742a-5b0d-4c9e-8a3f-7e2b1c6d9f04",
  "creditsUsed": 5
}
# 1. Start the conversion (returns at once with "status": "processing")
curl -X POST https://app.pedra.ai/api/create_floor_plan \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "imageUrl": "https://example.com/sketches/calle-mayor-12.jpg",
    "propertyName": "Calle Mayor 12",
    "waitForCompletion": false
  }'

# 2. Poll every 10 seconds until "status" is "ready" (or "failed")
curl -X POST https://app.pedra.ai/api/floor_plan_status \
  -H "Content-Type: application/json" \
  -d '{ "apiKey": "YOUR_API_KEY", "floorPlanId": "FLOOR_PLAN_ID" }'
JSON
{
  "message": "Floor plan conversion started",
  "floorPlanId": "Ae6pgFD6yZyyhpzZH",
  "propertyId": "196e742a-5b0d-4c9e-8a3f-7e2b1c6d9f04",
  "name": "Ground floor",
  "status": "processing",
  "appUrl": "https://app.pedra.ai/?projectId=196e742a-5b0d-4c9e-8a3f-7e2b1c6d9f04"
}

Estado da planta

POST/api/floor_plan_status

Devolve "processing", "ready" (com imageUrl) ou "failed". Nunca gasta créditos.

apiKeystringobrigatório
A tua API key.
floorPlanIdstringobrigatório
Id devolvido por create_floor_plan.
curl -X POST https://app.pedra.ai/api/floor_plan_status \
  -H "Content-Type: application/json" \
  -d '{ "apiKey": "YOUR_API_KEY", "floorPlanId": "FLOOR_PLAN_ID" }'

Resposta

JSON
{
  "floorPlanId": "Ae6pgFD6yZyyhpzZH",
  "propertyId": "196e742a-5b0d-4c9e-8a3f-7e2b1c6d9f04",
  "name": "Ground floor",
  "status": "ready",
  "imageUrl": "https://img.pedra.ai/floorplan-source-QiqMn78cKtNHk4LpF",
  "appUrl": "https://app.pedra.ai/?projectId=196e742a-5b0d-4c9e-8a3f-7e2b1c6d9f04",
  "creditsUsed": 5
}

Como obter uma boa planta

  • Escreve pelo menos uma medida real no desenho (o comprimento de uma parede ou a área total). Sem ela, a distribuição sai bem mas sem medidas.
  • Dá nome a cada divisão. Os nomes passam para a planta tal como estão escritos.
  • Fotografa a folha de cima, plana e bem iluminada. As imagens são reduzidas a 2400 px no lado maior, por isso um ficheiro maior não ajuda.

Erros

  • 400 falta imageUrl ou o URL não é uma imagem.
  • 403 créditos insuficientes (são precisos 5).
  • 404 API key desconhecida, ou um propertyId / floorPlanId que não é desta conta.
  • 409 o imóvel já tem 30 plantas.
  • 500 não foi possível ler o desenho. Nada é cobrado e não fica nenhuma planta.

A partir do ChatGPT ou do Claude

Os mesmos endpoints são as ferramentas pedra_create_floor_plan e pedra_get_floor_plan do servidor MCP da Pedra. Anexa uma foto do esboço no chat e pede a planta.