claude-1.0.1: Servant bindings to Anthropic's Claude API
Safe HaskellNone
LanguageHaskell2010

Claude.V1

Description

/v1

Example usage:

{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns        #-}
{-# LANGUAGE OverloadedStrings     #-}
{-# LANGUAGE OverloadedLists       #-}

module Main where

import Data.Foldable (traverse_)
import Claude.V1
import Claude.V1.Messages

import qualified Data.Text as Text
import qualified Data.Text.IO as Text.IO
import qualified System.Environment as Environment

main :: IO ()
main = do
    key <- Environment.getEnv "ANTHROPIC_KEY"

    clientEnv <- getClientEnv "https://api.anthropic.com"

    let Methods{ createMessage } = makeMethods clientEnv (Text.pack key) (Just "2023-06-01")

    text <- Text.IO.getLine

    MessageResponse{ content } <- createMessage _CreateMessage
        { model = "claude-sonnet-4-20250514"
        , messages =
            [ Message
                { role = User
                , content = [ Content_Text{ text } ]
                }
            ]
        , max_tokens = 1024
        }

    let display (ContentBlock_Text{ text = t }) = Text.IO.putStrLn t
        display _ = pure ()

    traverse_ display content
Synopsis

Methods

getClientEnv Source #

Arguments

:: Text

Base URL for API (e.g., "https://api.anthropic.com")

-> IO ClientEnv 

Convenient utility to get a ClientEnv for the most common use case

makeMethods Source #

Arguments

:: ClientEnv 
-> Text

API key

-> Maybe Text

Anthropic-Version header (e.g., "2023-06-01")

-> Methods 

Get a record of API methods after providing an API key

This is a convenience wrapper around makeMethodsWith for common usage.

makeMethodsWith :: ClientEnv -> ClientOptions -> Methods Source #

Get a record of API methods with full configuration options

Use this when you need to pass beta headers (e.g., for tool search):

let options = defaultClientOptions
        { apiKey = key
        , anthropicBeta = Just "advanced-tool-use-2025-11-20"
        }
let Methods{ createMessage } = makeMethodsWith clientEnv options

data ClientOptions Source #

Client configuration options

Constructors

ClientOptions 

Fields

Instances

Instances details
Show ClientOptions Source # 
Instance details

Defined in Claude.V1

defaultClientOptions :: ClientOptions Source #

Default client options (requires setting apiKey)

Servant

type API = Header' '[Required, Strict] "x-api-key" Text :> (Header' '[Optional, Strict] "anthropic-version" Text :> (Header' '[Optional, Strict] "anthropic-beta" Text :> ("v1" :> (API :<|> API)))) Source #

Servant API