# Key API Services

The Key API Services are the core of what you will need to create new contracts, and mint and transfer tokens.

<figure><img src="/files/uzF86kPZg6a4UarqXdPe" alt=""><figcaption></figcaption></figure>

Some Examples of what you can do with the key API Services:&#x20;

* Create a contract to mint tokens
* Create your own token collections
* mint your own tokens
* transfer tokens between wallets

## How can i use the key services?

Here is how you can mint your first token:

1. Check if your wallet has some balance and if not transfer some to it
2. [Contracts](/w3block-eng/dev-docs/api/key-api-services/tokens/contracts.md)  Create your first contract draft and then publish it
3. [Categories](/w3block-eng/dev-docs/api/key-api-services/tokens/categories.md)  [Subcategories](/w3block-eng/dev-docs/api/key-api-services/tokens/categories/subcategories.md)  Check if the existing categories and subcategories are what you need to create your token, if not, then create your own!
4. [Token Collections](/w3block-eng/dev-docs/api/key-api-services/tokens/token-collections.md)Create a token collection draft describing the details you want your tokens to have
5. [Token Collections](/w3block-eng/dev-docs/api/key-api-services/tokens/token-collections.md)  Publish the collection!!!

## How to instantiate the Key SDK

To instantiate the [Key SDK,](https://www.npmjs.com/package/@w3block/sdk-key) you must create the [ID SDK](https://www.npmjs.com/package/@w3block/sdk-id) before and pass it as argument into the Key SDK instantiation. Because of this accomplishment, you don't need to worry about the authentication layer using commerce SDK. The ID SDK will do this job for you and send the credentials to each request if you're authenticated - specially if autoRefresh is set as true.

```typescript
// Some codeimport { W3blockIdSDK } from '@w3block/sdk-id';
import { W3blockKeySDK } from '@w3block/sdk-key';

const idSdk = new W3blockIdSDK({
    baseURL: 'https://api-id.pixway.io',
    autoRefresh: true,
});

// Authenticate using idSdk with your credentials
// example: idSdk.authenticate({email: ..., password: ..., tenantId: ...})

const sdk = new W3blockKeySDK({
    idSdk,
    baseUrl: 'https://api.pixway.io'
});
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://w3block.gitbook.io/w3block-eng/dev-docs/api/key-api-services.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
