> ## Documentation Index
> Fetch the complete documentation index at: https://buttercms.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Swift SDK

> The ButterCMS Swift SDK provides a native Swift interface for iOS and macOS apps, with support for pages, collections, blog posts, and feeds.

## Installation

### Swift package manager

Add the package to your `Package.swift` dependencies:

```swift theme={null}
dependencies: [
    .package(
        url: "https://github.com/ButterCMS/buttercms-swift.git",
        from: "1.0.0"
    )
]
```

Or in Xcode: **File → Add Package Dependencies** and enter the repository URL.

## Initialization

Initialize the SDK with your Read API token from the [ButterCMS Settings](https://buttercms.com/settings/).

```swift theme={null}
import ButterCMS

ButterCMSSDK.shared.apiKey = "your_api_token"
```

## API methods

### Pages

```swift theme={null}
// Retrieve a single page
ButterCMSSDK.shared.getPage(
    pageType: "landing_page",
    pageSlug: "home-page",
    parameters: ["locale": "en"]
) { result in
    switch result {
    case .success(let page):
        print(page)
    case .failure(let error):
        print("Error: \(error)")
    }
}

// List all pages of a type
ButterCMSSDK.shared.getPages(
    pageType: "landing_page",
    parameters: ["page": "1", "page_size": "10"]
) { result in
    switch result {
    case .success(let pages):
        print(pages)
    case .failure(let error):
        print("Error: \(error)")
    }
}
```

### Collections

```swift theme={null}
// Retrieve collection content
ButterCMSSDK.shared.getContentFields(
    keys: ["faq", "navigation"],
    parameters: ["locale": "en"]
) { result in
    switch result {
    case .success(let content):
        print(content)
    case .failure(let error):
        print("Error: \(error)")
    }
}
```

### Blog Posts

```swift theme={null}
// List blog posts
ButterCMSSDK.shared.getPosts(
    parameters: ["page": "1", "page_size": "10"]
) { result in
    switch result {
    case .success(let posts):
        print(posts)
    case .failure(let error):
        print("Error: \(error)")
    }
}

// Retrieve a single post
ButterCMSSDK.shared.getPost(slug: "my-post-slug") { result in
    switch result {
    case .success(let post):
        print(post)
    case .failure(let error):
        print("Error: \(error)")
    }
}
```

### Authors, categories, and tags

```swift theme={null}
// List authors
ButterCMSSDK.shared.getAuthors(
    parameters: ["include": "recent_posts"]
) { result in /* handle result */ }

// List categories
ButterCMSSDK.shared.getCategories(
    parameters: ["include": "recent_posts"]
) { result in /* handle result */ }

// List tags
ButterCMSSDK.shared.getTags(
    parameters: ["include": "recent_posts"]
) { result in /* handle result */ }
```

## Resources

<CardGroup cols={2}>
  <Card title="GitHub Repository" icon="github" href="https://github.com/ButterCMS/buttercms-swift">
    View source code, report issues, and contribute
  </Card>
</CardGroup>
