Your first call
Once your key is active, read your profile. It is the simplest signed call, and it tells you what your application may do.
With the .NET SDK
builder.Services
.AddAnisPartners(options => options.Authority = new Uri("https://<the address Anis gave you>"))
.WithSigner(EcdsaP256Signer.FromPemFile("/secure/partner-key.pem", keyId));
// later, from the container:
var profile = await anis.Profile.GetAsync(ct);
Console.WriteLine(string.Join(", ", profile.Application!.Scopes));
See the .NET SDK page for settings files, key custody and the rest of the client.
What comes back
Read your profile returns your partner and application ids, the Anis business account you act for, and the permissions your application has right now. Permissions come from your application’s live policy and are checked on every call — a change by Anis staff applies to your next request, not your next restart — so read them rather than caching them.
When a call is refused
Every refusal carries a code and a link to its page in Error codes. The first ones you may meet:
| Code | Usually means |
|---|---|
invalid_credentials |
The key id, the key, the signature or the clock is wrong — or the key is not active yet |
insufficient_scope |
A missing permission, or a call from outside your allowed networks |
Check your signature
If a signature will not verify, ask Anis what it saw: Check your signature runs
your call through all of Anis’s checks, changes nothing, and reports the method, address, path and query it
signed over, the key it found and the permissions in force. It needs the diagnostics:use permission.
var seen = await anis.Diagnostics.CheckSignatureAsync(ct);
Console.WriteLine($"{seen.Method} {seen.Authority}{seen.Path} ?{seen.CanonicalQuery} key {seen.KeyId}");
Compare each value with what you signed — it is almost always the address or the query.
If the self-check is refused too
Then the key itself is the problem: a key id that does not match the key file, a key not yet confirmed or already revoked, or a server clock that is not synchronised.