Skip to content

First Request

Objective

In this guide, you will make your first successful request to the Pontotel API: list users.

What you'll do

  1. Authenticate and obtain token
  2. Make GET request to list users
  3. Process the response

Step 1: Authentication

First, obtain your access token:

Python
import requests

# Login endpoint
login_url = "https://apis.pontotel.com.br/pontotel/api/v4/login/"

# Credentials
credentials = {
    "username": "your_username",
    "password": "your_password"
}

# Login
response = requests.post(login_url, json=credentials)

if response.status_code == 200:
    data = response.json()
    access_token = data["access_token"]
    print(f"✅ Token obtained: {access_token[:20]}...")
else:
    print(f"❌ Login error: {response.status_code}")
    print(response.json())
JavaScript
const loginUrl = "https://apis.pontotel.com.br/pontotel/api/v4/login/";

const credentials = {
  username: "your_username",
  password: "your_password"
};

const loginResponse = await fetch(loginUrl, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(credentials)
});

if (loginResponse.ok) {
  const data = await loginResponse.json();
  const accessToken = data.access_token;
  console.log('✅ Token obtained:', accessToken.substring(0, 20) + '...');
} else {
  console.error('❌ Login error:', loginResponse.status);
}
Bash
curl -X POST "https://apis.pontotel.com.br/pontotel/api/v4/login/" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "your_username",
    "password": "your_password"
  }' \
  -o response.json

# Extract token
TOKEN=$(cat response.json | jq -r '.access_token')
echo "✅ Token obtained: ${TOKEN:0:20}..."

Step 2: List Users

Now use the token to make your first request:

Python
# Users endpoint
users_url = "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/"

# Headers with authentication
headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

# Make request
response = requests.get(users_url, headers=headers)

if response.status_code == 200:
    users = response.json()
    print(f"✅ Request successful!")
    print(f"Total users: {users['count']}")
    print(f"\nFirst 3 users:")
    for user in users['results'][:3]:
        print(f"  - {user['username']} ({user['email']})")
else:
    print(f"❌ Request error: {response.status_code}")
JavaScript
const usersUrl = "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/";

const headers = {
  'Authorization': `Bearer ${accessToken}`,
  'Content-Type': 'application/json'
};

const usersResponse = await fetch(usersUrl, { headers });

if (usersResponse.ok) {
  const users = await usersResponse.json();
  console.log('✅ Request successful!');
  console.log('Total users:', users.count);
  console.log('\nFirst 3 users:');
  users.results.slice(0, 3).forEach(user => {
    console.log(`  - ${user.username} (${user.email})`);
  });
} else {
  console.error('❌ Request error:', usersResponse.status);
}
Bash
1
2
3
curl -X GET "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json"

Step 3: Understand the Response

The response will be in this format:

JSON
{
  "count": 150,
  "next": "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/?page=2",
  "previous": null,
  "results": [
    {
      "id": 1,
      "username": "user1",
      "email": "user1@example.com",
      "first_name": "John",
      "last_name": "Smith",
      "is_active": true,
      "date_joined": "2025-01-01T10:00:00Z"
    }
  ]
}

Response Fields

Field Description
count Total available records
next URL for next page (null if none)
previous URL for previous page (null if none)
results Array with current page data

Complete Script

Here is the complete code to copy and test:

Python
import requests

def first_request():
    # 1. Login
    login_url = "https://apis.pontotel.com.br/pontotel/api/v4/login/"
    credentials = {
        "username": "your_username",
        "password": "your_password"
    }

    login_response = requests.post(login_url, json=credentials)
    login_response.raise_for_status()
    access_token = login_response.json()["access_token"]
    print(f"✅ Authenticated successfully!")

    # 2. List users
    users_url = "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/"
    headers = {"Authorization": f"Bearer {access_token}"}

    users_response = requests.get(users_url, headers=headers)
    users_response.raise_for_status()
    users = users_response.json()

    # 3. Display results
    print(f"\n📊 Total users: {users['count']}")
    print(f"📄 Users on this page: {len(users['results'])}")
    print(f"\n👥 First users:")
    for user in users['results'][:5]:
        status = "✅" if user['is_active'] else "❌"
        print(f"  {status} {user['username']:20} - {user['email']}")

    return users

if __name__ == "__main__":
    try:
        first_request()
    except requests.exceptions.HTTPError as e:
        print(f"❌ HTTP Error: {e}")
    except Exception as e:
        print(f"❌ Error: {e}")

Possible Errors

Error Cause Solution
401 Unauthorized Invalid or expired token Login again
403 Forbidden No permission to access users Check user permissions
429 Too Many Requests Too many requests Implement rate limiting
500 Internal Server Error Server error Try again or contact support

Next Steps

Congratulations! 🎉 You made your first request successfully.

Now explore more:

  1. Understand pagination →
  2. Learn about other entities →
  3. Create a user →
  4. See advanced examples →