# cqGMA Spot API Documentation

## Overview

The cqGMA Spot API allows software developers to submit activator spots directly to the cqGMA spotting system.

API URL:

```text
https://www.cqgma.org/api/spot/
```

Support:

support@cqgma.org

---

# JSON Upload Structure

```json
{
  "USER": "DR0ABC",
  "PSWD": "******",
  "DUMP": 0,
  "SPOT": [
    {
      "MYCALL": "DR0ABC",
      "ACTIVATOR": "DM7N/P",
      "REF": "DLFF-0125",
      "KHZ": "145425",
      "MODE": "FM",
      "REMARKS": "[EG] Big Signal!"
    }
  ]
}
```

---

# Main Parameters

| Parameter | Description |
|---|---|
| USER | cqGMA username |
| PSWD | cqGMA password |
| DUMP | 0 = no dump, 1 = HTML debug output |
| SPOT | array containing spot records |

---

# Spot Parameters

| Parameter | Description |
|---|---|
| MYCALL | spotter’s callsign |
| ACTIVATOR | activator’s callsign used over the air |
| REF | activated reference |
| KHZ | frequency in KHz |
| MODE | operating mode (FM, SSB, CW, FT8, etc.) |
| REMARKS | optional remarks |

---

# Example Spot

```json
{
  "MYCALL": "DL4MFM",
  "ACTIVATOR": "DL2DXA/P",
  "REF": "DLFF-0125",
  "KHZ": "7032",
  "MODE": "CW",
  "REMARKS": "Strong signal"
}
```

---

# Return JSON

```json
{
  "CHECKLOG": "all fine",
  "DUMP": "is on",
  "Inserted_Spots": "1",
  "MYCALL_ERROR": "NONE",
  "REF_ERROR": "NONE",
  "EXIT_ERROR": "NONE"
}
```

---

# Return Values

| Field | Description |
|---|---|
| CHECKLOG | general spot evaluation |
| DUMP | dump mode status |
| Inserted_Spots | number of inserted spots |
| MYCALL_ERROR | callsign-related errors |
| REF_ERROR | invalid or unknown reference |
| EXIT_ERROR | fatal API error |

---

# PHP Example

```php
<?php

$url = 'https://www.cqgma.org/api/spot/';

$data = array(
    'USER' => 'DL4MFM',
    'PSWD' => 'secret',
    'DUMP' => 0,
    'SPOT' => array(
        array(
            'MYCALL' => 'DL4MFM',
            'ACTIVATOR' => 'DL2DXA/P',
            'REF' => 'DLFF-0125',
            'KHZ' => '7032',
            'MODE' => 'CW',
            'REMARKS' => 'Strong signal'
        )
    )
);

$json = json_encode($data);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json'
));

curl_setopt($ch, CURLOPT_POSTFIELDS, $json);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

?>
```

---

# Notes

- JSON must be UTF-8 encoded
- KHZ must contain the frequency in KHz
- MODE should follow ADIF naming conventions
- Multiple spots may be uploaded in one request
- cqGMA validates references automatically

---

# Contact

CQGMA Website:

```
https://www.cqgma.org
```

Support:

```
support@cqgma.org
```
