API

Próximamente

Mandás un archivo y una dirección, y Craftshop lo imprime, lo controla y lo despacha, avisándote por webhook en cada etapa.

Vista previa

Próximamente

Crear un pedido

cURLbash
curl https://api.craftshoplabs.com/v1/orders \
  -H "Authorization: Bearer $CRAFTSHOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MOD-0020",
    "quantity": 1,
    "material": "PETG Negro",
    "ship_to": {
      "name": "Ana Gómez",
      "address": "Av. Corrientes 1234, Piso 3",
      "city": "Ciudad Autónoma de Buenos Aires",
      "postal_code": "C1043AAZ",
      "country": "AR"
    }
  }'
Node.jsjavascript
const response = await fetch('https://api.craftshoplabs.com/v1/orders', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CRAFTSHOP_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'MOD-0020',
    quantity: 1,
    material: 'PETG Negro',
    ship_to: {
      name: 'Ana Gómez',
      address: 'Av. Corrientes 1234, Piso 3',
      city: 'Ciudad Autónoma de Buenos Aires',
      postal_code: 'C1043AAZ',
      country: 'AR',
    },
  }),
})

const order = await response.json()
Pythonpython
import os

import requests

api_key = os.environ["CRAFTSHOP_API_KEY"]

response = requests.post(
    "https://api.craftshoplabs.com/v1/orders",
    headers={"Authorization": f"Bearer {api_key}"},
    json={
        "model": "MOD-0020",
        "quantity": 1,
        "material": "PETG Negro",
        "ship_to": {
            "name": "Ana Gómez",
            "address": "Av. Corrientes 1234, Piso 3",
            "city": "Ciudad Autónoma de Buenos Aires",
            "postal_code": "C1043AAZ",
            "country": "AR",
        },
    },
)

order = response.json()
Rustrust
let api_key = std::env::var("CRAFTSHOP_API_KEY")?;

let order: serde_json::Value = reqwest::Client::new()
    .post("https://api.craftshoplabs.com/v1/orders")
    .bearer_auth(api_key)
    .json(&serde_json::json!({
        "model": "MOD-0020",
        "quantity": 1,
        "material": "PETG Negro",
        "ship_to": {
            "name": "Ana Gómez",
            "address": "Av. Corrientes 1234, Piso 3",
            "city": "Ciudad Autónoma de Buenos Aires",
            "postal_code": "C1043AAZ",
            "country": "AR"
        }
    }))
    .send()
    .await?
    .json()
    .await?;
TypeScript SDKtypescript
const craftshop = new Craftshop({ apiKey: process.env.CRAFTSHOP_API_KEY })

const order = await craftshop.orders.create({
  model: 'MOD-0020',
  quantity: 1,
  material: 'PETG Negro',
  shipTo: {
    name: 'Ana Gómez',
    address: 'Av. Corrientes 1234, Piso 3',
    city: 'Ciudad Autónoma de Buenos Aires',
    postalCode: 'C1043AAZ',
    country: 'AR',
  },
})
Aviso por etapajson
{
  "type": "job.status_changed",
  "job": "JOB-0142",
  "order": "ord_7Hq2mX",
  "status": "qc_passed",
  "occurred_at": "2026-09-30T11:08:00-03:00"
}
Así se va a crear un pedido y así se va a recibir cada cambio de etapa. Vista previa del producto planificado: todavía no está disponible y los detalles pueden cambiar.

Qué hace

  • Endpoints para modelos y pedidos

    Subís modelos, creás pedidos y consultás su estado con claves de API por organización.

  • Un webhook por etapa

    En cola, imprimiendo, QC y enviado: cada cambio te llega como un evento, igual que lo muestra la app.

  • Un sandbox para probar

    Probás el recorrido completo sin fabricar nada. La documentación, los SDKs y una CLI llegan después, generados del mismo contrato.

Dónde entra en el recorrido

Es otra puerta de entrada: en lugar de una venta en tu tienda, un pedido por API que sigue el mismo recorrido.

  1. Tienda (parte de este producto)
  2. Modelo
  3. Muestra de oro
  4. Trabajos (parte de este producto)
  5. Control de calidad (parte de este producto)
  6. Despacho (parte de este producto)

Hoy y lo que viene

Qué funciona hoy

  • La app ya funciona sobre la capa de servicios que la API va a exponer.
  • Pedidos, trabajos y envíos con un evento registrado en cada cambio.

Qué viene

  • Claves de API por organización y endpoints para modelos y pedidos.
  • Webhooks por etapa y un sandbox.
  • Documentación, SDKs y una CLI.

Empezá con lo que ya funciona.

Creás tu marca, elegís quién imprime y conectás Shopify. Lo que viene se suma a la misma cuenta, sin cambiar cómo trabajás.

Lista de espera

Sumá tu marca a Craftshop

Abrimos de a poco, marca por marca. Dejanos tu email y te escribimos cuando haya lugar para la tuya.

Cuando entre tu marca

  • Cada venta se imprime por pieza

    Un pedido de tu tienda llega al taller como un trabajo por pieza, y el seguimiento vuelve a tu tienda para que el comprador lo vea donde compró.

  • Nada sale sin control con fotos

    Aprobás una muestra de oro por modelo y taller. Antes de despachar, cada pieza pasa un control con fotos contra esa muestra.

  • Empezás con Shopify

    Conectás tu tienda Shopify y subís cada modelo una sola vez. Tiendanube y Mercado Libre se suman después, cada una con su propia integración.