Skip to content
FLORA DocsGo to app

Attach an asset to a canvas

client.Projects.Assets.AttachAsset(ctx, assetID, body) (*ProjectAssetAttachAssetResponse, error)
POST/projects/{projectId}/assets/{assetId}/attach

Attaches an existing ready asset to a project canvas as a static media node. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate.

ParametersExpand Collapse
assetID string

Asset identifier

body ProjectAssetAttachAssetParams
ProjectID param.Field[string]

Project identifier

ReturnsExpand Collapse
type ProjectAssetAttachAssetResponse struct{…}
AssetID string

Asset identifier

CanvasURL string

Project canvas URL

formaturi
NodeID string

Canvas node identifier

minLength1
ProjectID string

Project identifier

Attach an asset to a canvas

package main

import (
  "context"
  "fmt"

  "github.com/florafauna-ai/flora-go"
  "github.com/florafauna-ai/flora-go/option"
)

func main() {
  client := flora.NewClient(
    option.WithAPIKey("My API Key"),
  )
  response, err := client.Projects.Assets.AttachAsset(
    context.TODO(),
    "asset_abc123",
    flora.ProjectAssetAttachAssetParams{
      ProjectID: "prj_abc123",
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response.AssetID)
}
{
  "asset_id": "asset_abc123",
  "canvas_url": "https://example.com",
  "node_id": "node_abc123",
  "project_id": "prj_abc123"
}
{
  "error": {
    "code": "input_validation_error",
    "message": "prompt: Required",
    "fields": [
      {
        "field": "prompt",
        "message": "Required"
      }
    ]
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key."
  }
}
{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient credits."
  }
}
{
  "error": {
    "code": "forbidden",
    "message": "Forbidden."
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not found."
  }
}
{
  "error": {
    "code": "idempotency_duplicate",
    "message": "Duplicate idempotency key."
  }
}
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}
{
  "error": {
    "code": "unknown_error",
    "message": "An unknown error occurred."
  }
}
Returns Examples
{
  "asset_id": "asset_abc123",
  "canvas_url": "https://example.com",
  "node_id": "node_abc123",
  "project_id": "prj_abc123"
}
{
  "error": {
    "code": "input_validation_error",
    "message": "prompt: Required",
    "fields": [
      {
        "field": "prompt",
        "message": "Required"
      }
    ]
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key."
  }
}
{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient credits."
  }
}
{
  "error": {
    "code": "forbidden",
    "message": "Forbidden."
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not found."
  }
}
{
  "error": {
    "code": "idempotency_duplicate",
    "message": "Duplicate idempotency key."
  }
}
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}
{
  "error": {
    "code": "unknown_error",
    "message": "An unknown error occurred."
  }
}