# Quickstart
> Source: /api-reference/introduction/quickstart
> Get started with Journey API in 5 minutes

# Quickstart Guide

Start making API calls in 5 minutes.

## 1. Get Authentication Credentials [#1-get-authentication-credentials]

### For Members API [#for-members-api]
1. Sign up at [Journey Dashboard](https://dashboard.journey.com)
2. Obtain Clerk JWT token via OAuth/Email/Phone
3. Call `/members/me/auth/validate` to provision member

### For Admin API [#for-admin-api]
1. Request admin access from Journey team
2. Configure WorkOS SSO integration
3. Obtain WorkOS JWT token

### For Core Platform server integrations [#for-core-platform-server-integrations]

1. Choose the `/partner`, `/admin`, or `/internal` surface for the caller.
2. Obtain the corresponding WorkOS token, admin credential, or bounded service
   credential from Journey.
3. Confirm the credential's organization and permission grants.
4. Add a stable `Idempotency-Key` to every mutation.

<Warning>
  Never place an internal service credential in browser code. HXP3 and other
  operator applications call Core from their authorized server boundary.
</Warning>

## 2. Make Your First Request [#2-make-your-first-request]

<CodeGroup>
```typescript Members API
const response = await fetch('https://api.journey.com/members/me', {
  headers: {
    'Authorization': `Bearer ${clerkToken}`,
    'Content-Type': 'application/json'
  }
});

const member = await response.json();
console.log('Member:', member);
```

```typescript Admin API
const response = await fetch('https://api.journey.com/admin/members/query', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${workosToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    limit: 10,
    offset: 0
  })
});

const members = await response.json();
```

```typescript Public API
const response = await fetch('https://api.journey.com/public/properties/PROP123');
const property = await response.json();
console.log('Property:', property);
```

```typescript Core Partner Insights
const response = await fetch('https://api.journey.com/partner/insights/guests?limit=50', {
  headers: {
    'Authorization': `Bearer ${workosToken}`
  }
});

const guests = await response.json();
```
</CodeGroup>

## 3. Install Bruno for Testing [#3-install-bruno-for-testing]

```bash
# Install Bruno
brew install bruno

# Clone API repository
git clone https://github.com/Journey-Rewards/api.git

# Open Bruno collection
bruno open api/bruno
```

## 4. Common Workflows [#4-common-workflows]

### Member Provisioning Flow [#member-provisioning-flow]

```typescript
// Step 1: Validate and provision
await fetch('/members/me/auth/validate', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${token}` }
});

// Step 2: Update profile
await fetch('/members/me', {
  method: 'PATCH',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    firstName: 'John',
    lastName: 'Doe',
    onboardingCompleted: true
  })
});

// Step 3: Get complete member data
const member = await fetch('/members/me', {
  headers: { 'Authorization': `Bearer ${token}` }
});
```

## Next Steps [#next-steps]

- [Authentication Guide](/api-reference/authentication/overview)
- [Members API Reference](/api-reference/members/overview)
- Admin API Reference
- Core Platform API
- Core server integration guide
- [Bruno Setup Guide](/api-reference/introduction/bruno-setup)
