The Akka Streams API supports two kinds of Graphs:
- Linear graphs: These graphs are simple graphs with only basic building blocks of Akka Streams (Source | Flow | Sink). They have no complexity:

- Non-linear graphs: These graphs are complex graphs with the basic building blocks of Akka Streams + Akka Streams junctions:

To support these two kinds of Akka Streams Graphs, the Akka Streams API has the following two kinds of Graph DSL (Domain-Specific Language) APIs:
- Akka Streams DSL: This is a DSL API used for Akka Streams linear graphs, that is, only for simple graphs. It has two sets of APIs:
- Akka Streams DSL for Java
- Akka Streams DSL for Scala
- Akka Streams Graph DSL: This is a DSL API used for Akka Streams non-linear graphs, that is, only for complex graphs. Like Akka Streams DSL, this too has two sets of APIs:
- Akka Streams Graph DSL for Java
- Akka...