> ## Documentation Index
> Fetch the complete documentation index at: https://docs.moritosh.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> How the Pulsewave API is organized

The Pulsewave API is a REST API. It accepts JSON request bodies, returns JSON responses, and uses standard HTTP response codes and verbs.

<CardGroup cols={2}>
  <Card title="Base URL" icon="globe">
    `https://api.pulsewave.dev/v1`
  </Card>

  <Card title="Sandbox URL" icon="flask">
    `https://api.sandbox.pulsewave.dev/v1`
  </Card>
</CardGroup>

## Resources

| Resource                                                     | Description                                               |
| ------------------------------------------------------------ | --------------------------------------------------------- |
| [Messages](/api-reference/messages/send)                     | Send and inspect individual email, SMS, and push messages |
| [Templates](/api-reference/templates/create)                 | Reusable, versioned content rendered into messages        |
| [Contacts](/api-reference/contacts/create)                   | People you send messages to                               |
| [Lists](/api-reference/lists/create)                         | Named groups of contacts                                  |
| [Domains](/api-reference/domains/create)                     | Sending domains and their DNS verification status         |
| [API Keys](/api-reference/api-keys/create)                   | Credentials used to authenticate requests                 |
| [Webhook Endpoints](/api-reference/webhook-endpoints/create) | URLs that receive event notifications                     |
| [Events](/api-reference/events/list)                         | Read-only log of everything that happened to a message    |

## Specification

This reference is generated from our OpenAPI document.

<Card title="OpenAPI specification" icon="file-code" href="https://github.com/pulsewave/api/blob/main/openapi.json">
  View the raw `openapi.json`
</Card>

## Authentication

Every request must include an API key in the `Authorization` header:

```bash theme={null}
curl https://api.pulsewave.dev/v1/messages \
  -H "Authorization: Bearer pw_live_8f2k9q3m1n7r5t6y4u2i0o8p"
```

See [Authentication](/authentication) for the difference between live and test keys, and how to scope keys to specific permissions.

## Idempotency

`POST` requests that create a resource accept an `Idempotency-Key` header so they can be safely retried. See [Idempotency](/idempotency).

## Errors

Errors share a consistent shape across every endpoint. See [Errors](/errors) for the full list of error types and codes.
