export const metadata = {
title: 'HTTP',
description:
'How Lysand uses the HTTP protocol for all communications between instances.',
}
# HTTP
Lysand uses the HTTP protocol for all communications between instances. HTTP requests must conform to certain standards to ensure compatibility between different implementations, as well as to ensure the security and integrity of the data being exchanged.
ALL kinds of HTTP requests/responses between instances **MUST** include a [Signature](/signatures), signed with either the relevant [User](/entities/users)'s private key or the [Server Actor](/entities/server-actor)'s private key.
## Requests
Must include `application/json`.
Must include `application/json; charset=utf-8`, if the request has a body.
Request signature, if the request is signed.
Date and time of the request.
A string identifying the software making the request.
```http {{ 'title': 'Example Request' }}
POST /users/1/inbox HTTP/1.1
Accept: application/json
Signature: keyId="https://example.com/users/1",algorithm="ed25519",headers="(request-target) host date digest",signature="..."
Date: Thu, 01 Jan 1970 00:00:00 GMT
User-Agent: CoolServer/1.0 (https://coolserver.com)
```
## Responses
Must include `application/json; charset=utf-8`.
Response signature, if the response is signed.
Date and time of the response.
```http {{ 'title': 'Example Response' }}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Thu, 01 Jan 1970 00:00:00 GMT
Signature: keyId="https://example.com/users/1",algorithm="ed25519",headers="(request-target) host date digest",signature="..."
```