---
title: "Go SDK Quickstart"
description: "Get started with the TraceRTM Go SDK in minutes"
keywords: [go, golang, sdk, quickstart, tutorial]
---

# Go SDK Quickstart

Get started with the TraceRTM Go SDK in 5 minutes.

## Installation

```bash
go get github.com/tracertm/tracertm-go
```

## Initialize Client

```go
package main

import (
    "github.com/tracertm/tracertm-go"
)

func main() {
    client := tracertm.NewClient(
        tracertm.WithAPIKey("rtm_live_abc123..."),
    )
}
```

## Basic Operations

### List Projects

```go
projects, err := client.Projects.List()
if err != nil {
    log.Fatal(err)
}

for _, project := range projects {
    fmt.Printf("%s: %s\n", project.ID, project.Name)
}
```

### Create Project

```go
project, err := client.Projects.Create(tracertm.CreateProjectRequest{
    Name:        "My Project",
    Description: "Project description",
})
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Created project: %s\n", project.ID)
```

### Create Item

```go
item, err := client.Items.Create(tracertm.CreateItemRequest{
    Title:     "New Requirement",
    View:      "requirements",
    Status:    "draft",
    ProjectID: "proj_123",
})
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Created item: %s\n", item.ID)
```

## Complete Example

```go
package main

import (
    "fmt"
    "log"
    "github.com/tracertm/tracertm-go"
)

func main() {
    client := tracertm.NewClient(
        tracertm.WithAPIKey(os.Getenv("TRACERTM_API_KEY")),
    )

    // Create project
    project, err := client.Projects.Create(tracertm.CreateProjectRequest{
        Name:        "Example Project",
        Description: "Example project",
    })
    if err != nil {
        log.Fatal(err)
    }

    // Create requirement
    req, err := client.Items.Create(tracertm.CreateItemRequest{
        Title:     "User Authentication",
        View:      "requirements",
        Status:    "draft",
        ProjectID: project.ID,
    })
    if err != nil {
        log.Fatal(err)
    }

    // Create test case
    test, err := client.Items.Create(tracertm.CreateItemRequest{
        Title:     "Login Test",
        View:      "test-cases",
        Status:    "draft",
        ProjectID: project.ID,
    })
    if err != nil {
        log.Fatal(err)
    }

    // Create link
    link, err := client.Links.Create(tracertm.CreateLinkRequest{
        SourceID: req.ID,
        TargetID: test.ID,
        LinkType: "verified_by",
    })
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Created: %s --[verified_by]--> %s\n", req.Title, test.Title)
}
```

## Next Steps

- [Authentication](./03-authentication) - Authentication options
- [Artifacts](./04-artifacts) - Working with items
- [Examples](./06-examples) - More examples
