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

# Crear un User Profile

> Crea un nuevo User Profile bajo tu Primary Profile.

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

export const HeaderAPI = ({noProfileKey, profileKeyRequired}) => <>
    <ParamField header="Authorization" type="string" required>
      <a href="/apis/overview#authorization">API Key</a> of the Primary Profile.
      <br />
      <br />
      Format: <code>Authorization: Bearer API_KEY</code>
    </ParamField>
    {!noProfileKey && (profileKeyRequired ? <ParamField header="Profile-Key" type="string" required>
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField> : <ParamField header="Profile-Key" type="string">
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField>)}
  </>;

<PlansAvailable plans={["business"]} maxPackRequired={false} />

Crea un nuevo perfil bajo tu Primary Profile. Cuando el User Profile se crea correctamente, la respuesta de la API incluirá el Profile Key asociado al perfil recién creado. Almacena el Profile Key de forma segura en tu sistema, ya que será necesario para hacer llamadas a la API en nombre de tu usuario.

Ten en cuenta que, por motivos de seguridad, los Profile Keys solo se devuelven en dos casos específicos:

1. Creación del User Profile: cuando se crea un nuevo User Profile.
2. En el Ayrshare Dashboard: puedes encontrar el Profile Key de cada perfil dentro del Ayrshare Dashboard. Cambia al User Profile y luego navega a la página Profile Key.

Recomendamos almacenar el Profile Key de forma segura en tu sistema.

## Gestión de redes sociales

Usa el campo disableSocial para gestionar (añadir/eliminar) las redes sociales que se muestran. Consulta [Gestionar cuentas sociales](/apis/profiles/overview#enable-or-disable-social-networks) para más información.

## Gestión de User Profiles activos

Consulta aquí algunas recomendaciones para [gestionar User Profiles activos](/multiple-users/manage-user-profiles#managing-active-user-profiles).

## Consideraciones importantes de seguridad

<Warning>
  <ul className="custom-bullets">
    <li>Evita compartir los Profile Keys públicamente o exponerlos en código del lado del cliente o repositorios públicos.</li>
    <li>Los Profile Keys son credenciales sensibles utilizadas para autenticar y autorizar el acceso a los User Profiles.</li>
    <li>Es crucial almacenar los Profile Keys de forma segura en tu sistema, con los controles de acceso adecuados, para mantener la integridad y confidencialidad de los datos de tus usuarios.</li>
    <li>Por motivos de seguridad, el Profile Key no puede recuperarse de nuevo a través de la API. Sin embargo, puedes obtenerlo desde el [dashboard](/multiple-users/manage-user-profiles#get-the-profile-key).</li>
    <li>El `refId` también debe almacenarse para asociar un perfil al valor devuelto por el endpoint.</li>
  </ul>
</Warning>

## Parámetros de cabecera

<HeaderAPI noProfileKey />

## Parámetros del cuerpo

<ParamField body="title" type="string" required>
  Título del nuevo perfil. Debe ser único. Este título se mostrará en la página de vinculación de cuentas sociales.
</ParamField>

<ParamField body="messagingActive" type="boolean" default={false}>
  Establece en true para activar la mensajería para este user profile. La mensajería debe estar habilitada previamente en tu cuenta de Ayrshare.
</ParamField>

<ParamField body="hideTopHeader" type="boolean" default={false}>
  Oculta el encabezado superior en la página de vinculación de cuentas sociales.
</ParamField>

<ParamField body="hideLogo" type="boolean" default={false}>
  Oculta el logo de la empresa en la página de vinculación de cuentas sociales únicamente para este user profile. El logo global de la cuenta en otros perfiles no se ve afectado. Útil para hacer white-labeling de perfiles de partners individuales manteniendo la marca en el resto.
</ParamField>

<ParamField body="topHeader" type="string">
  Cambia el encabezado en la página de vinculación de cuentas sociales. Si no se establece, se muestra: "Social Accounts for "title"", donde "title" es el título del perfil.
</ParamField>

<ParamField body="disableSocial" type="array">
  Array de redes sociales que están deshabilitadas para el perfil de este usuario. La lista de redes sociales deshabilitadas del primary profile tiene prioridad.

  Redes disponibles: `bluesky`, `facebook`, `gmb`, `instagram`, `linkedin`, `pinterest`, `reddit`, `snapchat`, `telegram`, `threads`, `tiktok`, `twitter` y `youtube`.

  Consulta [habilitar o deshabilitar redes sociales](/apis/profiles/overview#enable-or-disable-social-networks) para más información.
</ParamField>

<ParamField body="team" type="boolean" default={false}>
  Crea un nuevo user profile como miembro de equipo estableciendo `team: true`. El campo `email` se usará para enviar el correo de invitación. Consulta [invitar a un miembro del equipo](/multiple-users/manage-user-profiles#invite-a-team-member) para más detalles sobre los requisitos.
</ParamField>

<ParamField body="email" type="string">
  Una dirección de correo electrónico válida a la que se enviará la invitación del miembro del equipo. Obligatorio si `team: true`.
</ParamField>

<ParamField body="subHeader" type="string">
  Cambia el subencabezado en la página de vinculación de cuentas sociales. Actualmente muestra "Click an icon to link a social network". Establece una cadena vacía para eliminarlo.

  Consulta cómo cambiar el [enlace de ayuda](/multiple-users/manage-user-profiles#help-links-visible).
</ParamField>

<ParamField body="tags" type="array">
  Etiqueta los user profiles usando un array de strings. Estas etiquetas sirven como herramienta organizativa interna para categorizar y gestionar tus user profiles de forma eficaz.
</ParamField>

<RequestExample>
  ```javascript cURL theme={"system"}
  curl \
  -H "Authorization: Bearer API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"title": "ACME Profile"}' \
  -X POST https://api.ayrshare.com/api/profiles
  ```

  ```javascript JavaScript theme={"system"}
  const API_KEY = "API_KEY";

  fetch("https://api.ayrshare.com/api/profiles", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          "Authorization": `Bearer ${API_KEY}`
        },
        body: JSON.stringify({
          title: "ACME Profile", // required
        }),
      })
        .then((res) => res.json())
        .then((json) => console.log(json))
        .catch(console.error);
  ```

  ```python Python theme={"system"}
  import requests

  payload = {'title': 'ACME Profile'}
  headers = {'Content-Type': 'application/json',
          'Authorization': 'Bearer API_KEY'}

  r = requests.post('https://api.ayrshare.com/api/profiles',
      json=payload,
      headers=headers)

  print(r.json())
  ```

  ```php PHP theme={"system"}
  <?php
  require 'vendor/autoload.php';    // Composer auto-loader using Guzzle. See .../guzzlephp.org/en/stable/overview.html

  $client = new GuzzleHttp\Client();
  $res = $client->request(
      'POST',
      'https://api.ayrshare.com/api/profiles',
      [
          'headers' => [
              'Content-Type'      => 'application/json',
              'Authorization'     => 'Bearer API_KEY'
          ],
          'title' => ['ACME Profile'],
      ]
  );

  echo json_encode(json_decode($res->getBody()), JSON_PRETTY_PRINT);
  ```

  ```go Go theme={"system"}
  package main

  import (
  	"bytes"
  	"encoding/json"
  	"log"
  	"net/http"
  )

  func main() {
  	message := map[string]interface{}{
  		"title": "ACME Profile"
  	}

  	bytesRepresentation, err := json.Marshal(message)
  	if err != nil {
  		log.Fatalln(err)
  	}

  	req, _ := http.NewRequest("POST", "https://api.ayrshare.com/api/profiles",
  		bytes.NewBuffer(bytesRepresentation))

  	req.Header.Add("Content-Type", "application/json; charset=UTF-8")
  	req.Header.Add("Authorization", "Bearer API_KEY")

  	res, err := http.DefaultClient.Do(req)
  	if err != nil {
  		log.Fatal("Error:", err)
  	}

  	res.Body.Close()
  }
  ```

  ```csharp C# theme={"system"}
  using System;
  using System.Net.Http;
  using System.Text;
  using System.Threading.Tasks;

  namespace CreateProfilePOSTRequest_csharp 
  {
    class CreateProfile
    {
        static async Task Main(string[] args)
        {
            string API_KEY = "API_KEY";
            string url = "https://api.ayrshare.com/api/profiles";
            string json = "{\"title\": \"ACME Profile\"}";

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);

                try
                {
                    var content = new StringContent(json, Encoding.UTF8, "application/json");
                    HttpResponseMessage response = await client.PostAsync(url, content);
                    
                    response.EnsureSuccessStatusCode();
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
                catch (HttpRequestException e)
                {
                    Console.WriteLine($"Error: {e.Message}");
                }
            }
        }
    }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200: Success theme={"system"}
  {
      "status": "success",
      "title": "Digg It",
      "refId": "140b8709bd6ade099b242d895e268fb886130c53",
      "profileKey": "7TVRLEZ-24A43C0-NJW0Z82-F11984N",
      "messagingActive": true // true if messaging for this user profile is active
  }
  ```

  ```json 400: Profile Title Already Exists theme={"system"}
  {
    "action": "create",
    "status": "error",
    "code": 146,
    "message": "Profile title already exists."
  }
  ```
</ResponseExample>
