Skip to main content
This walks you from nothing to an authenticated API call. It should take a few minutes.

Prerequisites

  • A way to receive email, to verify the account.
  • curl and Python 3, for the signing example at the end.

Create an account

1

Sign up

Register at console.basaltic.sh.You can do the same over the API with POST /v1/auth/register on iam.basaltic.sh, but the console handles email verification and the initial billing setup for you.
2

Verify your email

Registration sends a six-digit code. The account cannot create resources until it is verified.

Issue API credentials

Your console login is a browser session — an HttpOnly cookie, scoped to the browser. Programmatic access uses a service account and its access key instead. Create one in the console under IAM → Service accounts, or over the API:
1

Create the service account

A service account has no permissions of its own. Attach a policy, or add it to a group that carries one, before it can do anything.
2

Create a credential on it

The response carries the credential and its secret:
secret_access_key is returned once, at creation. It is not stored in a form the API can show you again. If you lose it, delete the credential and create another.

Make a signed request

Every programmatic request is signed with BASALTIC-HMAC-SHA256 — an HMAC over a canonical form of the request, keyed by a value derived from your secret. The signature covers the method, path, query, three headers, and a hash of the body, so nothing in the request can be altered in flight. The script below signs a request and calls it. It is a complete, working implementation of the scheme.
signed_request.py
Run it with your credentials in the environment:
A fresh account has no instances, so a healthy response is 200 with an empty list — that is the call succeeding, not failing.
Signing by hand is only worth it when you are writing a client. For everyday use the CLI signs for you.

Where to go next

Authentication

The full signing rules — clock skew, replay protection, streaming bodies, and temporary credentials.

Regions and endpoints

Which host each service answers on.

API reference

Every operation, with schemas.

Support

When something is wrong and you need a person.