Skip to content
Get started

JSON

client.Generate.Json(ctx, body) (*GenerateJsonResponse, error)
POST/generate/json

Fetches URL content, extracts data, and transforms it using AI based on custom instructions. Use this to generate new content, summaries, or restructured data.

ParametersExpand Collapse
body GenerateJsonParams
Instructions param.Field[string]

Instructions describing how to transform the data. Maximum 20,000 characters.

maxLength20000
JsonSchema param.Field[any]

JSON schema defining the structure of the transformed output

URL param.Field[string]

URL to fetch content from

formaturi
Effort param.Field[GenerateJsonParamsEffort]Optional

Fetch effort level controlling speed vs. capability tradeoff. “min”: fastest, no fallback (1-5s). “standard”: balanced with enhanced reliability (default, 3-15s). “max”: full browser rendering for JS-heavy sites (15-60s).

const GenerateJsonParamsEffortMin GenerateJsonParamsEffort = "min"
const GenerateJsonParamsEffortStandard GenerateJsonParamsEffort = "standard"
const GenerateJsonParamsEffortMax GenerateJsonParamsEffort = "max"
GeoTarget param.Field[GenerateJsonParamsGeoTarget]Optional

Optional geotargeting parameters for proxy requests

Country stringOptional

Country code using ISO 3166-1 alpha-2 standard (2 letters, e.g., “US”, “GB”, “JP”). See: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

Nocache param.Field[bool]Optional

Bypass cache and force fresh data retrieval

ReturnsExpand Collapse
type GenerateJsonResponse map[string, any]

JSON

package main

import (
  "context"
  "fmt"

  "github.com/stainless-sdks/tabstack-go"
  "github.com/stainless-sdks/tabstack-go/option"
)

func main() {
  client := tabstack.NewClient(
    option.WithAPIKey("My API Key"),
  )
  response, err := client.Generate.Json(context.TODO(), tabstack.GenerateJsonParams{
    Instructions: "For each story, categorize it (tech/business/science/other) and write a one-sentence summary explaining what it's about in simple terms.",
    JsonSchema: map[string]any{
    "properties": map[string]any{
    "summaries": map[string]any{
    "items": map[string]any{
    "properties": map[string]any{
    "category": map[string]any{
    "description": "Story category (tech/business/science/etc)",
    "type": "string",
    },
    "summary": map[string]any{
    "description": "One-sentence summary of the story",
    "type": "string",
    },
    "title": map[string]any{
    "description": "Story title",
    "type": "string",
    },
    },
    "type": "object",
    },
    "type": "array",
    },
    },
    "type": "object",
    },
    URL: "https://news.ycombinator.com",
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response)
}
{
  "foo": "bar"
}
{
  "error": "invalid JSON request body"
}
{
  "error": "json schema must be a valid object"
}
{
  "error": "instructions are required"
}
{
  "error": "json schema is required"
}
{
  "error": "url is required"
}
{
  "error": "failed to fetch URL"
}
{
  "error": "web page is too large"
}
{
  "error": "failed to transform data"
}
Returns Examples
{
  "foo": "bar"
}
{
  "error": "invalid JSON request body"
}
{
  "error": "json schema must be a valid object"
}
{
  "error": "instructions are required"
}
{
  "error": "json schema is required"
}
{
  "error": "url is required"
}
{
  "error": "failed to fetch URL"
}
{
  "error": "web page is too large"
}
{
  "error": "failed to transform data"
}