Get a token, make a first call and find your accounts: ten minutes to get started with the Grand Shooting REST API.
The Grand Shooting API is a REST API that exchanges JSON. It gives access to the same data as the application: Catalog, Productions, media, Specifications, stock, publication.
https://api.grand-shooting.com/v3Content-Type: application/json), except file uploads (multipart/form-data)A token (called "API key" in the interface) belongs to an API user of your account. An administrator of the account creates it in the account administration, Team > API menu, with Add an API key.
Two levels of rights:
| Right | What it allows |
|---|---|
api | Read and write |
api_ro | Read only: POST, PUT, PATCH and DELETE requests are rejected (401) |
Choose api_ro whenever the integration only reads (reporting, synchronization to a DAM): if the token leaks, it cannot change anything.
The token is shown only once, when it is created: keep it in a secrets vault, never in the code. It does not expire: it stays valid as long as the API user is active. To revoke it, block the key in Team > API.
The token goes in the Authorization header, after Bearer:
curl -H "Authorization: Bearer $GS_TOKEN" https://api.grand-shooting.com/v3/account/me
/account/me describes the user of the token and the accounts it can access. For each account, the api_host field gives the API address to use: the platform runs on several servers, and an account can be served by another address than api.grand-shooting.com (for example https://api-19.grand-shooting.com). Read api_host when your integration starts instead of hard-coding the address.
List the Productions of the account:
curl -H "Authorization: Bearer $GS_TOKEN" https://api.grand-shooting.com/v3/production
Search the approved media (picturestatus 50) modified since October 1st, most recent first:
curl -i -H "Authorization: Bearer $GS_TOKEN" \
"https://api.grand-shooting.com/v3/picture?picturestatus=50&date_mod=gte:2026-10-01&sort_by=-date_mod"
The -i option shows the response headers: X-Total-Count gives the total number of results. Pagination, filters and statuses are explained in API concepts.
Create or update a Reference of the Catalog (the Reference is identified by ref: if it exists, it is updated):
curl -X POST -H "Authorization: Bearer $GS_TOKEN" -H "Content-Type: application/json" \
-d '{"ref":"SS26-DRESS-110","smalltext":"Boho dress"}' \
https://api.grand-shooting.com/v3/reference
Upload a photo to the Live step of a Production:
curl -X POST -H "Authorization: Bearer $GS_TOKEN" -F "file=@photo.jpg" -F "path=/" \
https://api.grand-shooting.com/v3/production/{bench_root_id}/bench/{bench_id}/upload
Or have Grand Shooting fetch files from their URLs (up to 200 per call), linking them directly to a Reference:
curl -X POST -H "Authorization: Bearer $GS_TOKEN" -H "Content-Type: application/json" \
-d '{"urls":[{"url":"https://cdn.example.com/a.jpg","filename":"a.jpg","ref":"SS26-DRESS-110"}]}' \
https://api.grand-shooting.com/v3/production/{bench_root_id}/bench/{bench_id}/upload/url
A service provider (studio, producer) often works on behalf of its customers. If the customer has given it a delegation, its token can act on the customer's account: add the account_id header with the id of the target account.
curl -H "Authorization: Bearer $GS_TOKEN" -H "account_id: 57" https://api.grand-shooting.com/v3/production
Without this header, requests apply to the token's account. The accessible accounts are listed by /account/me.
The API also accepts OAuth tokens, obtained by an OAuth application: they are sent with the access_token prefix (Authorization: access_token <token>) instead of Bearer. The rest of the API is the same.