Docs
Dashboard
On this page

    Uploads

    2 endpoints. Each needs an API key or OAuth token with the scope shown; the key already names its store, so paths start at /v1/store. Generated from the live contract; also in openapi.json.

    Get a short-lived signed URL to PUT one file to (images for the gallery, private deliverables)

    POST/v1/store/uploads

    Or name the store: POST /v1/stores/{storeId}/uploads

    catalog:writecreateUpload

    Body

    • purpose"media" | "file" | "image" | "asset"required
    • filenamestringrequired
    • contentTypestringrequired
    • bytesintegerrequired

    Response UploadTicket

    • uploadIdMediaAssetIdrequired
    • urlstringrequired
    • methodstringrequired
    • headersobjectrequired
    • expiresAtTimestamprequired
    • maxBytesintegerrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/uploads" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "purpose": "media",
      "filename": "string",
      "contentType": "string",
      "bytes": 1
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/uploads', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "purpose": "media",
        "filename": "string",
        "contentType": "string",
        "bytes": 1
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/uploads",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "purpose": "media",
          "filename": "string",
          "contentType": "string",
          "bytes": 1
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/uploads", strings.NewReader(`{
      "purpose": "media",
      "filename": "string",
      "contentType": "string",
      "bytes": 1
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Check the uploaded bytes (size, real file type, image dimensions) and make the upload usable

    POST/v1/store/uploads/{uploadId}/complete

    Or name the store: POST /v1/stores/{storeId}/uploads/{uploadId}/complete

    catalog:writecompleteUpload

    Parameters

    • uploadIdupl_…pathrequired

    Response UploadedAsset

    • uploadIdMediaAssetIdrequired
    • purposeUploadPurposerequired
    • filenamestringrequired
    • contentTypestringrequired
    • bytesintegerrequired
    • urlstringrequired
    • widthinteger | nullrequired
    • heightinteger | nullrequired
    • sha256stringrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/uploads/upl_0123456789abcdefghjk/complete" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/uploads/upl_0123456789abcdefghjk/complete', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/uploads/upl_0123456789abcdefghjk/complete",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/uploads/upl_0123456789abcdefghjk/complete", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Was this page helpful?