> For the complete documentation index, see [llms.txt](https://docs.shippify.co/developers/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shippify.co/developers/shippify-api/primeros-pasos.md).

# Primeros pasos

En esta sección te guiaremos para que consigas realizar tu primer request.

## Ambientes

En Shippify proporcionamos dos ambientes, uno productivo y otro de pruebas, estos consisten en 2 cuentas diferentes, ambos apuntan al mismo endpoint pero las credenciales cambian. Para crear tus cuentas revisa [este sitio](/developers/procesos/crear-una-cuenta-en-shippify.md).

## Autenticación

El acceso a las entregas vía API se basa en la autenticación básica HTTP. Para poder llamar a nuestra API debes utilizar tus credenciales que se encuentran en la configuración de la empresa <https://dash.shippify.co/settings/sections/profile>

<figure><img src="https://4161681308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5jRdo0cXdFHp6c7ZKdof%2Fuploads%2F0oVHOwwlR8kmFJt9sny0%2Fimage.png?alt=media&amp;token=24503af3-6864-4d38-b7eb-3289bffb8617" alt=""><figcaption><p>Credenciales</p></figcaption></figure>

Obtendrás un ID de APP y un APP SECRET del dash para poder construir tu token con **basic auth**. En herramientas como postman, puedes colocar directamente tus credenciales y no es necesario armar el token.

<figure><img src="https://4161681308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5jRdo0cXdFHp6c7ZKdof%2Fuploads%2FBbpEyhfh5EEtjFu8qtgz%2Fimage.png?alt=media&amp;token=db865654-432e-408f-bac2-3a8941a329de" alt=""><figcaption><p>Autenticación en postman</p></figcaption></figure>

Sin embargo para integrar por código vas a necesitar formar el basic token para agregarlo en los headers de los requests bajo el key `Authorization`. Esto se realiza transformando las credenciales (seraradas por `:`) a base 64.

```javascript
const apiId="XXXXXXXX";
const apiToken="XXXXXXXXXX";
const token = `Basic ${btoa(`${apiId}:${apiToken}`)}`;
```

<figure><img src="https://4161681308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5jRdo0cXdFHp6c7ZKdof%2Fuploads%2Fn0H7Bc4Q0FCgV1Ne9PRo%2Fimage.png?alt=media&amp;token=100a4e33-3f3a-40e4-bc0e-d660ff063b41" alt=""><figcaption><p>Header con basic token</p></figcaption></figure>

El dominio para llamar a los endpoints es:

```
https://api.shippify.co
```

## Primer request

Para probar nuestra API basta con tener las credenciales de autenticación, para nuestro primer request vamos a consumir un endpoint de paises, en este espacio podrás probar el request y tus credenciales.

{% openapi src="/files/VJuDZL0X41Q4XlLfycDz" path="/v1/country" method="get" %}
[Copia de openapi.yaml](https://4161681308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5jRdo0cXdFHp6c7ZKdof%2Fuploads%2FYHzBSyOPfRCEY0rih3YZ%2FCopia%20de%20openapi.yaml?alt=media\&token=4983393a-4981-4d53-aee3-3abe2b71089a)
{% endopenapi %}

## Códigos de estado de respuesta API

Cada interacción con la API de Shippify devuelve un código de estado HTTP que indica si la solicitud tuvo éxito, falló o exige acciones particulares para acciones posteriores.

<table><thead><tr><th width="196">Código de estado</th><th>Descripción</th></tr></thead><tbody><tr><td>200 OK</td><td>La solicitud fue procesada exitosamente por Shippify.</td></tr><tr><td>400 Bad Request</td><td>El servidor Shippify no pudo decodificar el cuerpo de la solicitud, generalmente debido a una sintaxis mal formada o un encabezado incorrecto.</td></tr><tr><td>401 Unauthorized</td><td>La persona que llama no estaba autorizada para realizar la solicitud debido a que faltaban credenciales de autenticación o eran incorrectas. Consulte <a href="#autenticacion">Autenticación</a> para obtener más información.</td></tr><tr><td>404 Not Found</td><td>No se puede localizar el recurso solicitado. Consulte la API de Shippify para conocer el nombre correcto de los endpoints.</td></tr><tr><td>412 Precondition Failed</td><td>Payload con un formato incorrecto.</td></tr><tr><td>429 Too Many Requests</td><td>La solicitud superó los límites de tasa de solicitud.</td></tr><tr><td>500 Internal Server Error</td><td>Ocurrió un error interno del servidor de Shippify. Si el problema persiste, comuníquese con Soporte.</td></tr><tr><td>503 Service Unavailable</td><td>El servidor Shippify no está disponible temporalmente. Si el problema persiste, comuníquese con Soporte.</td></tr><tr><td>504 Gateway Timeout</td><td>El servidor Shippify que actúa como gateway o proxy agotó el tiempo de espera al intentar completar la solicitud. Inténtelo nuevamente más tarde o, si el problema persiste, comuníquese con Soporte .</td></tr></tbody></table>

## Restricciones

Para la mayoría de nuestros endpoints tenemos configurado ciertos límites al momento de hacer un request y es importante tener en cuenta al momento de integrar:

* No se puede realizar mas de 100 request por minuto al API.
* No se puede mandar a crear o editar mas de 100 pedidos en un request.
