Accessing our API
Accessing our API and building clients.
Most users will access Function through one of our client libraries. But if we do not yet have a client library for your development environment, Function provides an isomorphic GraphQL and REST API.
Making Requests
You can reach the Function APIs at the following URLs:
https://api.fxn.ai/graph
https://api.fxn.ai
Authenticating Requests
Most requests must be authenticated. Function provides three schemes for authenticating requests:
Bearer Token
Function supports authentication with a Bearer
token. Simply include your Function access key in your request Authorization
header:
# Open a terminal and run the following command:
curl https://api.fxn.ai/user -H "Authorization: Bearer <ACCESS KEY>"
You should see your user profile.
Basic Auth
Function also supports BASIC
password authentication:
# Open a terminal and run the following command:
curl https://api.fxn.ai/user -u <ACCESS KEY>:
You should see your user profile.
Custom Auth
Often times it is desirable to have your own custom authentication scheme, where you allow others to make predictions on your behalf. The most common use case is for developers who build paid AI products: you typically gate access to your predictors depending on whether a customer has paid you. In this case, Function allows you to set a custom authorizationUrl
on your account ↗
When a user tries to make a prediction with a predictor you own (i.e. the predictor tag
begins with your username):
// Create a Function client with an arbitrary access key
const fxn = new Function({ accessKey: "👁👄👁" });
// Make a prediction
const prediction = await fxn.predictions.create({
tag: "@username/some-predictor",
...
});
Function will send a POST
request to the authorizationUrl
you have specified. The request will contain the predictor tag
and the user-provided accessKey
:
{
"tag": "@username/some-predictor",
"accessKey": "👁👄👁" // Function will forward you the access key
}
If your URL responds with a 200
status, Function will authorize the prediction on your behalf.
@samplefxn
uses an authorizationUrl
that lets beautiful people make predictions 😉 On the other hand, your endpoint can respond with an error
key which will not allow the prediction to be made. The error
will be relayed to the user:
{
"error": "You have not yet paid 😛"
}
Building a Function Client
We welcome open-source contributors building their own Function clients. Whether you want to bring Function to a new development environment, or you think you can do a better job on a client than we've done, we welcome you to take a stab at it! Below are a few notes to keep in mind:
Learn more about our APIs with the public schemas.
Ask questions and suggest improvements to our docs.
Come talk to us on Discord.