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

# new AgentHttpServer()

> **new AgentHttpServer**\<`TState`>(`server`: [`AgentSocketServer`](/docs/agent-sdk/internals/the-socket-server)\<`TState`>): `AgentHttpServer`\<`TState`>

Creates the HTTP transport over an existing socket server. RPC over `POST …/rpc/<method>` and the SSE streams use that server's authorization and dispatch, so one policy covers both transports.

```ts theme={null}
import { Agent, type Env } from "@telnyx/edge-runtime";
import { AgentSocketServer } from "@telnyx/edge-runtime/agent-socket";
import { AgentHttpServer } from "@telnyx/edge-runtime/agent-http";

export class Conversation extends Agent<Env> {
  private desk = new AgentSocketServer<Record<string, unknown>>(this, {
    getState: () => this.getState(),
    authorize: (token) => (token === undefined ? ["read"] : ["read", "rpc"]),
  });
  private door = new AgentHttpServer(this.desk);

  override fetch(req: Request): Promise<Response> {
    return this.door.fetch(req);
  }
}
```

**Parameters**

| Parameter | Type | Meaning |
| - | - | - |
| `server` | [`AgentSocketServer`](/docs/agent-sdk/internals/the-socket-server)\<`TState`> | The instance's socket server. |

**Type Parameters**

| Parameter | Default | Meaning |
| - | - | - |
| `TState` | `Record<string, unknown>` | The agent's persistent state shape, as served by the socket server. |
