Scroll
  • Home
  • Evorion
  • Features
  • Pricing
  • Reviews
  • Docs
  • Updates
Log inSign up

Go licensing API

Validate a licence from Go with net/http. Fits a service, a CLI, or the backend behind your storefront.

Validate a licence key

One POST to /apps/{appId}/licenses/authenticate. Go 1.21+. Standard library only.

package licence

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"time"
)

type Result struct {
	Authenticated bool `json:"authenticated"`
	Subscription  *struct {
		Level  int    `json:"level"`
		Name   string `json:"name"`
		Active bool   `json:"active"`
	} `json:"subscription"`
}

func Verify(key string) (*Result, error) {
	body, _ := json.Marshal(map[string]string{"licenseKey": key})
	url := fmt.Sprintf("https://api.evora.lol/api/developer-api/apps/%s/licenses/authenticate", os.Getenv("EVORA_APP_ID"))

	req, _ := http.NewRequest("POST", url, bytes.NewReader(body))
	req.Header.Set("Authorization", "Bearer "+os.Getenv("EVORA_API_KEY"))
	req.Header.Set("Content-Type", "application/json")

	res, err := (&http.Client{Timeout: 10 * time.Second}).Do(req)
	if err != nil {
		return nil, err
	}
	defer res.Body.Close()

	var out Result
	return &out, json.NewDecoder(res.Body).Decode(&out)
}

What you get back

  • authenticated — whether the key is valid and usable right now.
  • subscription.level and subscription.name — the tier you configured.
  • subscription.active — false when expired or paused. Use this, not the raw expiry.
  • subscription.hwid — the bound device, when HWID locking is on.

Keep the key server-side

The API key is a server credential. The safe shape is always: browser → your server → Evorion. Your backend holds the key, validates the licence, then issues your own session.

  • Never ship ag_sk_ keys to a client of any kind.
  • Scope each key to the minimum it needs, and to one application where you can.
  • Rotate from the dashboard; keys are shown once on creation.

Native apps want the C++ SDK

If you are shipping a Windows binary to end users, REST alone leaves the client unprotected. The C++ SDK adds encrypted bodies, device-bound credentials and runtime protection that a dashboard toggle can change mid-session.

  • SDK documentation
  • Full REST reference

Go questions

Is there an Evorion SDK for Go?
No, and you do not need one. Go talks to the same REST API the dashboard uses — the snippet on this page is the whole integration. The one native SDK is C++, which exists because it adds things a REST call cannot: encrypted request bodies, device-bound credentials, and server-driven runtime protection.
Can I call the API from Go running in a browser?
No. Anything shipped to a browser is readable by anyone who opens developer tools, so an API key there is a public key. Call it from your server, and issue your own session to the browser afterwards. CORS blocks browser origins for exactly this reason.
What does the authenticate endpoint return?
A JSON object with `authenticated` (boolean) and, when the licence resolves to a customer, a `subscription` object carrying level, name, expiry, HWID and an `active` flag. Read `active` rather than comparing the expiry date yourself — it applies the same rule the SDK does, including pauses.

Other languages: PHP, Node.js, Python, C#, Java, Ruby.

Make the hunt endless.Available today.

Get startedContact sales
Evora

Authentication, licensing, and runtime protection for Windows applications.

Product
  • Evorion SDK
  • Features
  • Pricing
  • Evorion
  • Updates
  • Reviews
Developers
  • Documentation
  • API reference
  • Integrations
  • Why Evorion
Resources
  • Aim module
  • Reseller program
  • Discord
Account
  • Sign in
  • Create account
Legal
  • Terms
© 2026 Evora. All rights reserved.