diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts
index c81cc65fbef911bcb160acc7bdb516ec3aa80e1d..cfa03be24607f07f1713ddcff4f5c3b0d8a1d040 100644
--- a/api/src/engine/connectors/datashield/main.connector.ts
+++ b/api/src/engine/connectors/datashield/main.connector.ts
@@ -1,8 +1,14 @@
 import { Observable } from 'rxjs';
 import { IEngineService } from 'src/engine/engine.interfaces';
 import { Domain } from 'src/engine/models/domain.model';
+import { TransientCreateInput } from 'src/engine/models/transient/transient-create.input';
+import { Transient } from 'src/engine/models/transient/transient.model';
 
 export default class DataShieldService implements IEngineService {
+  createTransient(data: TransientCreateInput): Promise<Transient> | Transient {
+    throw new Error('Method not implemented.');
+  }
+
   getDomains(): Domain[] {
     throw new Error('Method not implemented.');
   }
diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts
index aa8fd7d531f63c3b44f0c546619889269f8c0dcb..30a7a6e283885e97c3dd7ef4321dd61a04d21c3c 100644
--- a/api/src/engine/connectors/exareme/main.connector.ts
+++ b/api/src/engine/connectors/exareme/main.connector.ts
@@ -5,6 +5,8 @@ import { firstValueFrom, map, Observable } from 'rxjs';
 import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces';
 import { Domain } from 'src/engine/models/domain.model';
 import { Group } from 'src/engine/models/group.model';
+import { TransientCreateInput } from 'src/engine/models/transient/transient-create.input';
+import { Transient } from 'src/engine/models/transient/transient.model';
 import { Variable } from 'src/engine/models/variable.model';
 import { dataToCategory, dataToGroup, dataToVariable } from './converters';
 import { Hierarchy } from './interfaces/hierarchy.interface';
@@ -16,6 +18,13 @@ export default class ExaremeService implements IEngineService {
     private readonly httpService: HttpService,
   ) {}
 
+  createTransient(data: TransientCreateInput): Transient | Promise<Transient> {
+    return {
+      id: 'test',
+      label: 'test',
+    };
+  }
+
   async getDomains(ids: string[]): Promise<Domain[]> {
     const path = this.options.baseurl + 'pathologies';
 
diff --git a/api/src/engine/engine.interfaces.ts b/api/src/engine/engine.interfaces.ts
index 09b86b731d670a83b598936d834b8993f4a8b27f..ec9bcd7d2ba113d292f0b68ff3bce599f4007f6c 100644
--- a/api/src/engine/engine.interfaces.ts
+++ b/api/src/engine/engine.interfaces.ts
@@ -1,6 +1,8 @@
 import { Request } from 'express';
 import { Observable } from 'rxjs';
 import { Domain } from './models/domain.model';
+import { TransientCreateInput } from './models/transient/transient-create.input';
+import { Transient } from './models/transient/transient.model';
 
 export interface IEngineOptions {
   type: string;
@@ -24,6 +26,8 @@ export interface IEngineService {
 
   startExperimentTransient(request: Request): Observable<string>;
 
+  createTransient(data: TransientCreateInput): Promise<Transient> | Transient;
+
   startExperiment(request: Request): Observable<string>;
 
   getActiveUser(request: Request): Observable<string>;
diff --git a/api/src/engine/engine.resolver.ts b/api/src/engine/engine.resolver.ts
index beeb589fc6de4f3294efffea16e4b55c1ac96f61..750a2d6683b9317daa7589970cbc161003698625 100644
--- a/api/src/engine/engine.resolver.ts
+++ b/api/src/engine/engine.resolver.ts
@@ -1,8 +1,10 @@
 import { Inject } from '@nestjs/common';
-import { Args, Query, Resolver } from '@nestjs/graphql';
+import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
 import { ENGINE_SERVICE } from './engine.constants';
 import { IEngineService } from './engine.interfaces';
 import { Domain } from './models/domain.model';
+import { TransientCreateInput } from './models/transient/transient-create.input';
+import { Transient } from './models/transient/transient.model';
 
 @Resolver()
 export class EngineResolver {
@@ -17,4 +19,11 @@ export class EngineResolver {
   ) {
     return this.engineService.getDomains(ids);
   }
+
+  @Mutation(() => Transient)
+  async createTransient(
+    @Args('data') transientCreateInput: TransientCreateInput,
+  ) {
+    return this.engineService.createTransient(transientCreateInput);
+  }
 }
diff --git a/api/src/engine/models/transient/transient-create.input.ts b/api/src/engine/models/transient/transient-create.input.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d4b012c25106bc9633c7043d3c05932a19eb5a67
--- /dev/null
+++ b/api/src/engine/models/transient/transient-create.input.ts
@@ -0,0 +1,7 @@
+import { Field, InputType } from '@nestjs/graphql';
+
+@InputType()
+export class TransientCreateInput {
+  @Field()
+  name: string;
+}
diff --git a/api/src/engine/models/transient/transient.model.ts b/api/src/engine/models/transient/transient.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4831c0fff16c45f4247038ddfa60c61a3e0ee105
--- /dev/null
+++ b/api/src/engine/models/transient/transient.model.ts
@@ -0,0 +1,5 @@
+import { ObjectType } from '@nestjs/graphql';
+import { Entity } from '../entity.model';
+
+@ObjectType()
+export class Transient extends Entity {}
diff --git a/api/src/schema.gql b/api/src/schema.gql
index 023cdbeda9b5556163b2cd09140be601bd7cbc9c..5657a0dff1bb60212db3b62b0c2ff9bd60ac3ee0 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -4,7 +4,7 @@
 
 type Category {
   id: String!
-  label: String!
+  label: String
 }
 
 type Variable {
@@ -18,7 +18,7 @@ type Variable {
 
 type Group {
   id: String!
-  label: String!
+  label: String
   description: String
   groups: [Group!]!
   variables: [Variable!]!
@@ -26,7 +26,7 @@ type Group {
 
 type Domain {
   id: String!
-  label: String!
+  label: String
   description: String
   groups: [Group!]!
   variables: [Variable!]!
@@ -34,6 +34,19 @@ type Domain {
   rootGroup: Group!
 }
 
+type Transient {
+  id: String!
+  label: String
+}
+
 type Query {
   domains(ids: [String!] = []): [Domain!]!
 }
+
+type Mutation {
+  createTransient(data: TransientCreateInput!): Transient!
+}
+
+input TransientCreateInput {
+  name: String!
+}