Eagle GraphQL API

Eagle API Documentation

Connect to the Eagle GraphQL API using client credentials. This guide walks you through creating credentials, getting an access token, and making your first GraphQL request in three straightforward steps.

Client credentials Session tokens GraphQL REST-like token exchange

Introduction

The Eagle API gives you programmatic access to Eagle property management data — properties, contacts, appraisals, listings, and more — via a single GraphQL endpoint.

Authentication uses a simple two-step flow: exchange your client_id and client_secret for a short-lived session token, then include that token as a Bearer header on every GraphQL request.

How it works

1

Create credentials

Generate a client_id and client_secret in the Eagle app under Settings → API Credentials.

2

Get a token

POST to /api/v3/token with your credentials to receive a 24-hour session token.

3

Query the API

Send GraphQL queries/mutations to /api/v3/graphql using the token in the Authorization: Bearer header.

Base URL: https://www.eagleagent.com.au — all paths below are relative to this base.

Step 1 — Create API credentials

Before you can request a token you need a client_id and client_secret pair from the Eagle application.

  1. Go to https://www.eagleagent.com.au/agent and sign in.
  2. Click Settings in the top-right corner.
  3. Click API Credentials in the left-hand navigation.
  4. Click New Credentials.
  5. Enter a description (e.g. My Integration) and click Create.
  6. Your new credentials appear in the list. Click show to reveal the client secret.
Keep your secret safe. Your client_secret is shown once and used to request tokens — treat it like a password. Never expose it in client-side or frontend code.

Step 2 — Request a session token

POST to the token endpoint with your credentials in the Authorization header using the format client_id:client_secret. The returned token is valid for 24 hours.

Endpoint

POST https://www.eagleagent.com.au/api/v3/token

Headers

HeaderValueNotes
Content-Typeapplication/jsonRequired
AuthorizationBearer {client_id}:{client_secret}Colon-separated credentials

Example — cURL

Request
curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer 5889796789559:230408972308020237838' \
  https://www.eagleagent.com.au/api/v3/token
Response
{
  "data": {
    "token": {
      "token": "eyJ0eXAfKV1QiLCJhbGciOiJIUzI1NiJ9....",
      "expiresAt": 1582206763
    }
  }
}
Token expiry: expiresAt is a Unix timestamp (seconds). Request a fresh token before it expires to avoid 401 Unauthorized errors.

Step 3 — Make a GraphQL request

Include the session token in every request to the GraphQL endpoint using the Authorization: Bearer TOKEN header.

Endpoint

POST https://www.eagleagent.com.au/api/v3/graphql

Required headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer {session_token}

Request body

Send a JSON body with a query field containing your GraphQL query string, and optionally a variables object.

{
  "query": "query { ... }",
  "variables": { "key": "value" }
}
Schema explorer: browse all available queries, mutations, types, and fields at https://api.eaglesoftware.com.au/v3/.

Example — list properties

This example fetches the first page of properties with address, coordinates, and vendor details.

GraphQL query

query GetProperties {
  properties {
    nodes {
      id
      formattedAddress
      latitude
      longitude
      vendors {
        contact {
          firstName
          lastName
        }
      }
    }
  }
}

Full cURL request

Request
curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer eyJ0eXAfKV1QiLCJhbGciOiJIUzI1NiJ9....' \
  --data '{
    "query": "query GetProperties { properties { nodes { id formattedAddress latitude longitude vendors { contact { firstName lastName } } } } }"
  }' \
  https://www.eagleagent.com.au/api/v3/graphql

Using variables (recommended)

Pass dynamic values as variables rather than inlining them in the query string.

curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer eyJ0eXAfKV1QiLCJhbGciOiJIUzI1NiJ9....' \
  --data '{
    "query": "query GetProperty($id: ID!) { property(id: $id) { id formattedAddress } }",
    "variables": { "id": "42" }
  }' \
  https://www.eagleagent.com.au/api/v3/graphql

Example response

All GraphQL responses follow the same envelope structure: a top-level data object containing your result, and an optional errors array.

Successful response
{
  "data": {
    "properties": {
      "nodes": [
        {
          "id": "1",
          "formattedAddress": "1366 May Locks, EUROA",
          "latitude": -36.7247,
          "longitude": 145.9944,
          "vendors": []
        },
        {
          "id": "3",
          "formattedAddress": "4831 Konopelski Summit, EUROA",
          "latitude": -36.8443,
          "longitude": 145.7846,
          "vendors": []
        }
      ]
    }
  }
}
Error response
{
  "data": null,
  "errors": [
    {
      "message": "Not authorized to access this resource",
      "locations": [{ "line": 2, "column": 3 }],
      "path": ["properties"]
    }
  ]
}

Implementation notes

  • Always send requests as POST — the GraphQL endpoint does not support GET.
  • Set Content-Type: application/json on every request.
  • Pass the session token as Authorization: Bearer TOKEN.
  • Tokens expire after 24 hours (Unix timestamp in expiresAt). Re-request a token before it expires.
  • Use variables instead of string interpolation to pass dynamic values into queries.
  • Use the schema explorer to discover exact field names, argument types, and available operations.
  • GraphQL responses can return partial data alongside errors — always check the errors array even when data is present.
  • Never expose client_id or client_secret in frontend or mobile code.

Common errors

HTTP status GraphQL error message Likely cause
401 Not authorized Missing, expired, or malformed Authorization header
200 Not authorized to access this resource Token is valid but the credential doesn't have access to the requested field
400 Parse error on … Malformed GraphQL query syntax
200 Field ‘X’ doesn’t exist on type ‘Y’ Querying a field that doesn't exist in the schema — use the schema explorer to verify
200 Variable $x of type T was provided invalid value Wrong type passed as a variable (e.g. string where Int is expected)

API reference

Useful links for further exploration and integration.

🔍 GraphQL schema explorer Browse all available queries, mutations, types, and fields interactively. https://api.eaglesoftware.com.au/v3/ GraphQL endpoint The main endpoint for all GraphQL queries and mutations. https://www.eagleagent.com.au/api/v3/graphql 🔒 Token endpoint Exchange client credentials for a 24-hour session token. https://www.eagleagent.com.au/api/v3/token 🤝 Partner API documentation For integration partners accessing the Eagle API via scoped, permission-based access. partner_index.html